Angular升级至7/8后@types/lodash编译报错求助
Angular升级至7/8后@types/lodash编译报错求助
我之前把项目从低版本Angular升级到8的时候,也碰到过完全一模一样的@types/lodash编译报错,折腾了好一会儿才找到根源,给你分享几个亲测有效的解决办法:
1. 降级@types/lodash到兼容版本(最核心的解决方法)
这个报错的本质原因是:Angular 8配套的TypeScript版本是3.4.x~3.5.x,而你当前安装的高版本@types/lodash用了TypeScript 3.7+才支持的新语法(比如可选链、新的类型定义写法),旧版TS解析不了这些语法就会报一堆TS1005这类错误。
解决步骤:
- 先确认你的TS版本:运行
ng version查看TypeScript那一行,确认是3.4/3.5系列 - 安装适配的@types/lodash版本,比如
4.14.182(这个版本是专门兼容TS 3.4的):npm install @types/lodash@4.14.182 --save-dev # 如果你用yarn的话 yarn add @types/lodash@4.14.182 -D - 可以在
package.json里把这个版本锁死,避免后续npm/yarn自动更新到不兼容的版本
2. 清理依赖缓存并重装(解决潜在的依赖冲突)
有时候本地的依赖缓存或者lock文件会导致版本混乱,建议做一次彻底的清理:
- 删除
node_modules文件夹:# Mac/Linux rm -rf node_modules # Windows rd /s /q node_modules - 删除
package-lock.json(或者yarn.lock):rm package-lock.json - 重新安装所有依赖:
npm install - 重启
ng serve试试
3. 临时规避(不推荐长期使用)
如果实在急着让项目跑起来,可以临时在tsconfig.json的compilerOptions里加上:
"skipLibCheck": true
这个配置会让TS跳过对第三方库类型定义的检查,能暂时屏蔽报错,但这只是治标不治本的办法,还是建议优先用前两个方法解决版本兼容问题。
内容来源于stack exchange
相关产品推荐
相关产品推荐

