Angular v12升级v13后出现Uncaught TypeError报错如何解决?
报错原因与排查解决方案
这个报错是Angular v12升v13的典型兼容性问题,本质是Angular v13依赖的tslib版本与项目现有配置/依赖不兼容,装饰器相关工具函数无法正常加载导致的。可按以下步骤逐一排查解决:
- 第一步:校验并升级
tslib依赖版本
Angular v13要求tslib最低版本为2.3.0,需确认你项目package.json的dependencies节点(而非devDependencies)中配置了符合版本要求的tslib:
若版本不符,执行命令安装对应版本:"dependencies": { "tslib": "^2.3.0" }npm i tslib@^2.3.0 - 第二步:修正tsconfig.json配置
确认tsconfig.json的compilerOptions节点下存在以下配置:{ "compilerOptions": { "importHelpers": true, "target": "ES2020", "emitDecoratorMetadata": true, "experimentalDecorators": true } }importHelpers设为true会让TypeScript从tslib导入公共辅助函数,而非在每个文件重复生成,避免版本冲突。 - 第三步:清理缓存重新构建
先删除本地缓存、依赖文件与构建产物:# 清理Angular缓存 ng cache clean # 删除依赖与锁文件 rm -rf node_modules package-lock.json yarn.lock # 重新安装依赖 npm install # 重新启动服务/构建 ng serve - 第四步:修复第三方依赖版本冲突
如果以上步骤都无效,大概率是项目中某个第三方依赖依赖了低于2.3.0版本的tslib,可通过强制版本覆盖解决:
若使用npm,在package.json中新增overrides节点:
若使用yarn,新增"overrides": { "tslib": "^2.3.0" }resolutions节点:
配置后重新执行第三步的清理安装流程即可。"resolutions": { "tslib": "^2.3.0" }
内容的提问来源于stack exchange,提问作者VitoCK
相关产品推荐
相关产品推荐

