Angular 6中TSLint重复输出所有警告与错误问题求助
我之前帮团队把项目升级到Angular 6的时候,完完全全碰到过和你一模一样的问题——每一条TSLint错误都被打印两遍,当时看着终端里的重复信息头都大了!结合你的版本信息(TSLint 5.10.0、Angular CLI 6.0.0、TypeScript 2.7.2、Codelyzer 4.3.0),大概率是依赖版本兼容冲突或者Angular CLI的lint配置重复触发检查导致的,给你几个亲测有效的解决办法:
1. 修复依赖版本不匹配问题
Angular 6对Codelyzer和TSLint的版本有明确的兼容要求,你当前用的Codelyzer 4.3.0和TSLint 5.10.0组合可能存在重复触发检查的bug。建议卸载现有依赖后重新安装匹配版本:
# 先卸载旧版本 npm uninstall tslint codelyzer --save-dev # 安装Angular 6官方推荐的兼容版本 npm install tslint@5.12.1 codelyzer@4.5.0 --save-dev
2. 检查angular.json中的lint配置是否重复
Angular 6开始用angular.json替代了旧的.angular-cli.json,如果迁移过程中配置没处理好,很可能出现重复的lint任务配置。打开你的angular.json,找到projects下对应项目的architect节点,确保只有一个lint配置项,示例如下:
"lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"], "exclude": ["**/node_modules/**"] } }
如果发现多个lint节点,删掉多余的即可。
3. 清理缓存与重新安装依赖
有时候残留的缓存或损坏的node_modules也会导致这类奇怪的问题,执行以下命令彻底清理:
# 删除依赖包和锁文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 清理npm缓存 npm cache clean --force
4. 排查VS Code插件的干扰
如果你用VS Code开发,还要检查TSLint插件是否和Angular CLI的lint命令冲突。可以临时禁用VS Code的TSLint插件,然后运行ng lint看看错误是否还重复输出。如果问题消失,建议把插件更新到最新版本,或者调整插件设置(比如关闭tslint.autoFixOnSave避免自动触发检查)。
按照上面的步骤操作后,再运行ng lint应该就能看到正常的、不重复的错误输出了。
内容的提问来源于stack exchange,提问作者Phaze

