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

Angular执行ng serve启动开发服务器报ERR_NO_ICU错误解决方案求助

错误原因

TypeError [ERR_NO_ICU]报错并非前端依赖版本冲突导致,根源是当前服务器安装的Node.js编译时未集成ICU(Unicode 国际化组件),而@angular-devkit/schematics依赖的TextDecoderAPI使用了只有带ICU版本的Node.js才支持的fatal参数,所以触发错误。

解决方案

方案一(推荐):更换带ICU的官方Node.js版本

Angular 9适配的Node.js版本范围为10.x ~ 12.x,直接安装对应版本的官方编译版Node.js即可:

  • 先卸载当前系统内置的无ICU版本Node.js:
    sudo apt remove nodejs -y && sudo apt autoremove -y
    
  • 通过nvm工具安装官方编译的Node.js 12.x版本,安装完成后执行nvm use 12切换版本
  • 验证ICU支持是否正常,执行以下命令输出ICU版本号即为修复成功:
    node -p "process.versions.icu"
    

方案二(临时规避):手动修改依赖源码

如果暂时不能更换Node.js版本,可以直接修改报错的依赖文件临时解决:

  • 打开报错指定的文件 /service/src/main/resources/static/node_modules/@angular-devkit/schematics/src/rules/template.js
  • 找到第27行初始化TextDecoder的代码,删除{ fatal: true }参数,修改为new TextDecoder()即可
  • 注意该修改为临时方案,重新执行npm install后会被覆盖,需要重新修改

方案三:重新编译Node.js集成ICU

如果需要保留当前Node.js大版本,可以自行编译带ICU支持的版本:

  • 先安装ICU开发依赖:
    sudo apt install libicu-dev -y
    
  • 下载对应版本的Node.js源码,编译时添加--with-intl=system-icu参数完成安装即可

额外优化建议

你当前package.json中@ngrx/schematics版本为^10.0.1,和其他Angular 9.x依赖的主版本不一致,修复Node.js问题后如果仍有其他报错,可以将@ngrx/schematics降级到9.x版本,保持依赖主版本统一。

内容的提问来源于stack exchange,提问作者אברגיל יעקובו

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 22:45:03