Angular 8升级至13后执行ng serve遇UnhandledPromiseRejectionWarning报错求助
这个报错核心原因是有依赖包使用了过时的TypeScript resolveTypeReferenceDirectives API签名,和Angular 13对应的TypeScript版本不兼容,以下是针对性修复步骤:
锁定兼容的TypeScript版本:Angular 13要求TypeScript版本在
4.4.2 ~ 4.6.x区间,在package.json中修改TypeScript版本为:"typescript": "~4.5.5"执行
npm install(或yarn install)重新安装。清理依赖缓存与重新安装:
- 删除项目根目录下的
node_modules文件夹、package-lock.json(或yarn.lock)文件 - 执行
npm cache clean --force清除npm缓存 - 重新执行
npm install安装依赖
- 删除项目根目录下的
升级ts-node到兼容版本:旧版ts-node的API调用不符合TS 4.x要求,将ts-node升级到10.x及以上版本(比如
10.9.1),修改package.json后重新安装。排查依赖冲突:执行
npm ls typescript查看项目中是否有其他依赖引入了不兼容的TypeScript版本,若有,通过npm dedupe或者在package.json中用对应字段强制统一版本:// npm 8+ 用overrides "overrides": { "typescript": "~4.5.5" } // yarn 用resolutions "resolutions": { "typescript": "~4.5.5" }检查构建配置:打开
angular.json,确认architect.build.options和architect.serve.options中没有自定义的resolveTypeReferenceDirectives相关配置,若有则移除。排查第三方工具插件:如果项目使用了
tsconfig-paths、@ngtools/webpack等工具,检查其版本是否与Angular 13兼容,升级到对应兼容版本,必要时暂时禁用插件验证是否解决问题。
内容的提问来源于stack exchange,提问作者Sankar S

