ESLint 插件安装后为什么规则不生效?
我最近在项目里装了一个 ESLint 插件 eslint-plugin-react-hooks,也按文档在 .eslintrc.js 里配置了 rules,但写代码时根本没触发对应的检查。比如我故意把 useEffect 写错,ESLint 却啥也不报。
我确认插件已经装在 devDependencies 里了,配置也加了 plugins 和 rules,但就是没效果。是不是还要额外启用什么?我的配置如下:
module.exports = {
plugins: ['react-hooks'],
rules: {
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn'
}
};
先确认一下插件是否真的被加载了。运行这个命令检查:
如果输出为空,说明配置没生效。
几个常见的坑:
1. VSCode 用户:有时候需要手动重启 ESLint 服务器。打开命令面板(Ctrl+Shift+P),搜 "ESLint: Restart ESLint Server" 重启一下。
2. 检查插件是否真的装对了。运行
npm list eslint-plugin-react-hooks确认安装没问题,有时候 node_modules 有问题会导致插件加载失败。3. 确认你用的是正确的配置文件。如果项目里同时存在 .eslintrc.js、.eslintrc.json、eslint.config.js,ESLint 可能会读取另一个你不知道的文件。用
npx eslint --debug your-file.js 2>&1 | grep "Configuration"能看到它实际加载的是哪个配置。4. 如果用的是 ESLint v9(flat config 模式),配置写法不太一样,需要用
reactHooksplugin 而不是 plugins 数组。你先跑一下上面的调试命令,看看具体是什么情况。
1. 先确认你的 ESLint 真的在运行。有些编辑器/IDE 默认不跑 ESLint,要装插件或者开启。比如 VS Code 需要 ESLint 扩展,而且 settings.json 里要有:
2. 确保你的文件扩展名是对的。React 组件如果是 .jsx 或 .tsx 后缀,要在 ESLint 配置里加:
3. 检查 node_modules 里确实有 eslint-plugin-react-hooks。有时候 yarn/npm 安装会抽风,删掉 node_modules 和 lock 文件重装更靠谱。
4. 建议直接用 extends 而不是单独配 rules,像上面代码那样。这样效率更高,还能自动带上其他必要配置。
5. 最后在终端手动跑下 ESLint 看看输出:
如果还不行,八成是文件没被 ESLint 处理到,检查下你的 .eslintignore 有没有误伤。