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

升级至Angular 6后执行npm install出现错误求助

解决Angular 5升级到6时ts.formatting.RulesProvider is not a constructor错误

这个问题我在升级Angular版本的时候也踩过坑,核心原因是**typescript-formatter包和Angular 6要求的TypeScript版本不兼容**。Angular 6对应的TypeScript最低版本是2.7.x,而旧版typescript-formatter依赖的ts.formatting.RulesProvider API已经被TypeScript废弃移除了,所以哪怕你删了node_modules重装也没用——这个包本身就跟不上新版本TS的节奏了。

给你几个可行的解决方案,按优先级排序:

方案1:替换为维护中的代码格式化工具(推荐)

typescript-formatter已经停止维护了,现在Angular生态里更推荐用prettier来做代码格式化,它对新版本TypeScript的兼容性更好,也和Angular CLI适配得不错:

  1. 先卸载旧的typescript-formatter:
npm uninstall typescript-formatter --save-dev
  1. 安装prettier及相关适配依赖:
npm install prettier @angular-eslint/eslint-plugin-prettier --save-dev
  1. 项目根目录创建.prettierrc配置文件,参考配置:
{
  "singleQuote": true,
  "trailingComma": "es5",
  "printWidth": 120,
  "tabWidth": 2
}

之后你就可以用npx prettier --write "src/**/*.{ts,html,css}"来格式化代码,也可以集成到IDE的自动格式化功能里。

方案2:排查并修复间接依赖问题

如果你的项目本身没直接装typescript-formatter,是某个依赖间接引入的,可以先找出依赖源:

npm ls typescript-formatter

找到后要么升级那个依赖包到兼容Angular 6的版本,要么在package.json里添加resolutions字段(npm需要配合npm-force-resolutions工具,yarn直接支持),强制指定一个兼容的typescript-formatter版本(不过注意,这个包已经停更,可能找不到合适的兼容版本,所以还是方案1更稳妥)。

方案3:临时降级TypeScript(不推荐)

虽然可以把TypeScript降级到2.6.x来适配旧的typescript-formatter,但这样会和Angular 6的要求冲突,后续可能引发其他兼容性问题,所以不建议这么做。

完成操作后,重新执行:

rm -rf node_modules package-lock.json
npm install
ng upgrade

应该就能顺利继续升级流程了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:06:36