You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular Universal运行npm run dev:ssr找不到server/main.js如何解决?

问题根因

你遇到的错误核心是SSR服务启动时,在预期路径下找不到服务端构建产物main.js,常见触发原因如下:

  • angular.json中SSR相关构建配置的输出路径和运行时读取路径不匹配
  • tsconfig.server.json的输出目录配置和angular.json配置冲突
  • 使用了Angular 9+版本已经废弃的module-map-ngfactory-loader依赖,导致构建流程异常
  • Node.js奇数版本(你当前用的v15)存在兼容性问题
解决方案

按以下步骤逐一排查修复:

  1. 修正angular.json配置
    找到项目根目录angular.json文件,定位到projects > multikart > architect节点,确认server和serve-ssr配置符合以下规范:
"server": {
  "builder": "@angular-devkit/build-angular:server",
  "options": {
    "outputPath": "dist/multikart/server",
    "main": "server.ts",
    "tsConfig": "tsconfig.server.json",
    "inlineStyleLanguage": "scss"
  }
},
"serve-ssr": {
  "builder": "@nguniversal/builders:ssr-dev-server",
  "options": {
    "browserTarget": "multikart:build",
    "serverTarget": "multikart:server",
    "port": 4200
  }
}

重点确认server.options.outputPath的值为dist/multikart/server,和错误提示中查找的路径一致。

  1. 清理tsconfig.server.json冗余配置
    删除tsconfig.server.json中compilerOptions.outDir配置项,Angular SSR构建会优先读取angular.json中的outputPath配置,冲突的outDir会导致产物输出到错误目录。修正后配置参考:
{
  "extends": "./tsconfig.app.json",
  "compilerOptions": {
    "types": [
      "node"
    ],
    "target": "es2016"
  },
  "files": [
    "src/main.server.ts",
    "server.ts"
  ],
  "angularCompilerOptions": {
    "entryModule": "./src/app/app.server.module#AppServerModule"
  }
}
  1. 移除废弃依赖相关代码
    Angular 9及以上版本默认使用Ivy编译器,原生支持懒加载,不需要module-map-ngfactory-loader:
  • 从app.server.module.ts中移除ModuleMapLoaderModule的导入和imports数组中的引用
  • 从server.ts中移除LAZY_MODULE_MAP的声明和provideModuleMap(LAZY_MODULE_MAP)配置
  1. 验证构建产物
    先执行npm run build:ssr,完成后检查dist/multikart/server目录下是否存在main.js文件,存在的话再执行npm run dev:ssr即可正常启动。

  2. 可选:替换Node.js版本
    建议将Node.js版本替换为14.x或16.x的LTS版本,避免奇数版本的兼容性问题。


内容的提问来源于stack exchange,提问作者Herval NGANYA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:03