Angular 15 Universal执行serve:ssr报错:无法找到node模块
解决Angular Universal 15启动报错:无法找到模块'frontend\node'
我是Angular Universal新手,使用Angular 15和Angular Universal 15。执行build:ssr后运行serve:ssr时出现报错,提示无法找到模块'frontend\node',该错误在Docker容器内外均会出现。错误信息如下:
$ node --max-http-header-size=16384 node dist/server/main.js node:internal/modules/cjs/loader:936 throw err; ^ Error: Cannot find module 'frontend\node' at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15) at Function.Module._load (node:internal/modules/cjs/loader:778:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
相关配置文件
app.server.module.ts
import { NgModule } from '@angular/core'; import { ServerModule } from '@angular/platform-server'; import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { UniversalInterceptor } from './universal-interceptor'; import { AppModule } from './app.module'; import { AppComponent } from './app.component'; import { CookieModule } from 'ngx-cookie'; @NgModule({ imports: [ AppModule, ServerModule, CookieModule.withOptions(), ], bootstrap: [AppComponent], providers: [ { provide: HTTP_INTERCEPTORS, useClass: UniversalInterceptor, multi: true, }, ], }) export class AppServerModule { }
main.server.ts
import { enableProdMode } from '@angular/core'; import { environment } from './environments/environment'; if (environment.production) { enableProdMode(); } export { AppServerModule } from './app/app.server.module'; export { ngExpressEngine } from '@nguniversal/express-engine'; export { renderModule } from '@angular/platform-server'
tsconfig.server.json
{ "extends": "./tsconfig.app.json", "compilerOptions": { "outDir": "./out-tsc/server", "types": [ "node" ] }, "files": [ "src/main.server.ts", "server.ts" ], "include": [ "src/**/*.d.ts" ] }
解决步骤
修正启动命令
当前执行的命令里重复了node:node --max-http-header-size=16384 node dist/server/main.js,多余的node会被Node.js解析为要加载的模块,而当前工作目录是frontend,所以会尝试查找frontend/node模块,导致报错。正确命令应为:node --max-http-header-size=16384 dist/server/main.js也可以检查
package.json中的serve:ssr脚本,确保其配置的命令没有重复node。验证构建产物路径
执行build:ssr后,确认dist/server/main.js文件是否存在。如果路径不符,调整启动命令中的路径,或者检查angular.json里的SSR构建配置,确保输出目录正确。检查server.ts文件
确认项目根目录下存在server.ts文件,tsconfig.server.json的files数组里已经包含该文件,缺失会导致构建不完整,进而启动失败。清理缓存重新构建
- 删除项目根目录下的
node_modules、dist和out-tsc目录 - 执行
npm install重新安装依赖 - 重新运行
npm run build:ssr完成构建 - 再执行
npm run serve:ssr启动服务
- 删除项目根目录下的
内容的提问来源于stack exchange,提问作者LeiLi
相关产品推荐
相关产品推荐

