使用create-react-app创建的项目执行npm start时未触发linting
别担心,我之前也碰到过一模一样的情况,咱们一步步排查就能搞定:
确认start脚本未被修改
先打开你的package.json,检查scripts里的start命令是不是默认的:"scripts": { "start": "react-scripts start" }如果被改成了自定义命令,很可能丢失了自动lint的触发逻辑,改回默认脚本就行。
重新安装依赖修复潜在问题
有时候依赖安装会出现隐性错误,你可以先删掉node_modules文件夹和package-lock.json(用yarn的话就删yarn.lock),然后执行:npm install安装完成后,检查
package.json的devDependencies里是否包含eslint、eslint-config-react-app、eslint-plugin-react这些依赖——create-react-app默认会自动引入它们。检查eslint配置是否被覆盖
如果你手动添加了.eslintrc文件,或者在package.json里加了eslintConfig字段,一定要确保它继承了官方的默认配置:"eslintConfig": { "extends": "react-app" }另外,别在
.eslintignore里把src/目录加进去,不然eslint会直接跳过整个源码文件夹的检查。排查是否禁用了lint的环境变量
看看项目里有没有设置DISABLE_ESLINT_PLUGIN=true这个环境变量——不管是写在.env文件里,还是启动命令里额外加的,只要这个变量存在,create-react-app就会关闭自动lint功能。如果有,删掉它就行。升级react-scripts到最新版
旧版本的react-scripts可能存在lint触发的bug,你可以尝试升级到最新稳定版:npm install react-scripts@latest升级完成后重启项目,看看lint是否正常触发。
手动测试lint功能是否正常
先执行手动lint命令验证核心功能:npm run lint如果这个命令能输出lint错误(可以故意写个小错误,比如定义未使用的变量),说明eslint本身没问题,只是
npm start的自动触发逻辑有问题;如果手动也没输出,要么是代码完全符合规则,要么是配置还有遗漏。
内容的提问来源于stack exchange,提问作者crowhill

