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

Angular+Node.js应用Heroku构建失败,报错找不到node:stream/web

问题分析与修复方案

核心错误根源

构建失败的核心原因是TypeScript无法找到node:stream/web模块的类型声明,该错误来自socket.io依赖的engine.io-parser包。具体矛盾点:

  • Node.js 16+新增了node:stream/web内置模块,但你的@types/node版本为^11.15.54,这个旧版本完全不包含该模块的类型定义。
  • 你指定的Node.js版本是18.18.2,而Angular 11官方仅支持Node.js 12.x/14.x,版本不兼容导致新依赖的类型需求无法被满足。
  • 本地构建正常是因为依赖缓存掩盖了版本矛盾,Heroku是全新环境构建,直接暴露了问题。

快速修复方案(无需大版本升级)

1. 降级Node.js到Angular 11支持的版本

修改package.json的engines字段:

"engines": {
  "node": "14.21.3",
  "npm": "6.14.18"
}

2. 更新@types/node到匹配版本

安装Node.js 14对应的类型声明:

npm install @types/node@^14.18.60 --save-dev

3. 锁定engine.io-parser版本(可选)

如果降级Node后仍有问题,直接锁定兼容旧Node版本的engine.io-parser版本,在package.json中添加:

"resolutions": {
  "engine.io-parser": "~5.2.1"
}

再重新安装依赖:

npm install

4. 处理次要警告

  • autoprefixer警告:修改item-options-dialog-component-square.component.scss第128行,将end替换为flex-end。
  • SCSS预算超限:打开angular.json,找到budgets配置,把type: "style"的maximumWarning调整为7.10 kB即可。

长期解决方案(推荐)

Angular 11已停止维护,建议升级到支持Node.js 18的Angular LTS版本(如Angular 16):

  1. 逐步升级Angular核心包:
    ng update @angular/core@11 @angular/cli@11 --force
    ng update @angular/core@12 @angular/cli@12 --force
    # 依次升级到13、14、15、16,每次升级后修复peer依赖冲突
    
  2. 更新配套依赖:同步升级@ng-bootstrap/ng-bootstrap、socket.io等库到对应兼容版本。
  3. 确保@types/node版本为^18.0.0以上,匹配Node.js 18。

完成上述步骤后,重新测试本地构建,再推送到Heroku即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:35:02