从TSLint迁移至ESLint:执行convert-tslint-to-eslint命令后报错
解决Angular项目TSLint转ESLint时"Cannot find angular.json"的问题及版本疑问
我来帮你一步步排查和解决这个问题:
先解决"Cannot find angular.json"的直接报错
- 确认当前工作目录正确:这个转换命令必须在你的Angular项目根目录下执行,也就是存放
angular.json文件的那个文件夹。先打开终端运行ls(Mac/Linux)或dir(Windows),看看当前目录里有没有这个文件。如果没有,先通过cd命令切换到正确的项目根目录再重试。 - 检查项目是否为标准Angular CLI结构:如果你的项目是Angular 6之前创建的,那它用的配置文件是
.angular-cli.json而不是angular.json。这种老版本项目直接用@angular-eslint/schematics会不兼容,得先把项目迁移到Angular CLI的现代结构(也就是生成angular.json),或者先升级Angular版本。
关于是否需要升级到Angular 13的疑问
TSLint已经被官方废弃,而@angular-eslint/schematics是Angular官方推荐的ESLint替代方案,它的版本和Angular版本强绑定:
- Angular 12及以上版本才原生支持ESLint,并且使用
angular.json作为项目配置文件。如果你的项目是Angular 11或更低版本,不仅可能出现找不到angular.json的问题,还会有大量兼容性冲突。 - 建议先运行
ng version查看你的Angular版本:- 如果是Angular 10或更早,建议先逐步升级到Angular 12或13(不建议跨大版本直接升级,比如从Angular 9跳到13,容易出问题),可以用Angular CLI的升级命令:
ng update @angular/cli @angular/core,每次升级一个大版本,逐步完成。 - 如果已经是Angular 12+,那确保安装的
@angular-eslint/schematics版本和你的Angular版本一致,比如Angular 12对应@angular-eslint/schematics@12,安装时可以指定版本:npm install @angular-eslint/schematics@12 --save-dev。
- 如果是Angular 10或更早,建议先逐步升级到Angular 12或13(不建议跨大版本直接升级,比如从Angular 9跳到13,容易出问题),可以用Angular CLI的升级命令:
额外排查点
如果以上步骤都做了还是报错,可以试试:
- 检查
angular.json是否被误改名或删除,要是不小心删了,可以通过ng init(在项目根目录)重新生成一个基础配置文件,再手动恢复项目的特定配置。 - 确认终端有足够的权限访问
angular.json,比如某些系统下需要用管理员权限运行终端。
内容的提问来源于stack exchange,提问作者Rômulo Sorato
相关产品推荐
相关产品推荐

