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

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"
  ]
}

解决步骤

  1. 修正启动命令
    当前执行的命令里重复了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。

  2. 验证构建产物路径
    执行build:ssr后,确认dist/server/main.js文件是否存在。如果路径不符,调整启动命令中的路径,或者检查angular.json里的SSR构建配置,确保输出目录正确。

  3. 检查server.ts文件
    确认项目根目录下存在server.ts文件,tsconfig.server.json的files数组里已经包含该文件,缺失会导致构建不完整,进而启动失败。

  4. 清理缓存重新构建

    • 删除项目根目录下的node_modules、dist和out-tsc目录
    • 执行npm install重新安装依赖
    • 重新运行npm run build:ssr完成构建
    • 再执行npm run serve:ssr启动服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:23:32