必须先在项目本地安装ESLint和自定义规则插件,VSCode才能调用它们;全局安装或只装VSCode插件无效,真正执行检查的是node_modules/.bin/eslint,需通过npx eslint --version验证存在,且自定义插件须在.eslintrc.cjs中正确声明plugins并启用对应规则。

必须先在项目本地安装 ESLint 和自定义规则插件,VSCode 才能调用它们;全局安装或只装 VSCode 插件根本无效。
确认项目已安装 eslint 和自定义规则插件
VSCode 的 ESLint 插件只是“调度器”,真正执行检查和修复的是你项目 node_modules/.bin/eslint 里的二进制文件。如果没装,它连 eslint --version 都跑不起来。
- 运行
npx eslint --version,有输出说明已安装;若报错“command not found”,立刻执行npm install --save-dev eslint - 你的自定义规则插件(比如
@myorg/eslint-plugin-foo)也必须是devDependencies,不能只在package.json的dependencies里 - 检查
node_modules/@myorg/eslint-plugin-foo是否真实存在;若用 pnpm,注意是否被 hoist 或 link 错误导致路径不可达 - 确保插件导出的规则名在
.eslintrc.cjs中正确引用,例如:"@myorg/foo/no-bare-strings": "error",拼写/大小写/前缀一个都不能错
配置 .eslintrc.cjs 正确加载自定义插件
ESLint 不会自动发现并加载任意 npm 包——你得明确告诉它:“这个插件我要用”。plugins 字段只接受字符串数组,且不含 eslint-plugin- 前缀(除非你手动写了完整包名)。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 在项目根目录放
.eslintrc.cjs(不是.json,否则无法 require 自定义插件) -
plugins写法示例:plugins: ["@myorg/foo"]→ 对应包名@myorg/eslint-plugin-foo;若包名是my-eslint-plugin,则写["my-eslint-plugin"] - 必须配
extends或直接在rules里启用规则,否则插件加载了也不生效;比如:"@myorg/foo/no-bare-strings": "error" - 如果插件依赖额外 parser(如 TypeScript),确保
parser和parserOptions已同步配置,否则规则可能静默跳过
VSCode settings.json 关键开关设置
旧配置项 eslint.autoFixOnSave 已废弃,靠它什么都修不了。真正起效的只有 editor.codeActionsOnSave + 明确指定 ESLint 为格式化器。
- 关闭
editor.formatOnSave:否则 Prettier 或 Vetur 可能抢在 ESLint 之前重排代码,覆盖修复结果 - 启用
editor.codeActionsOnSave: { "source.fixAll.eslint": true }—— 这是唯一可靠的自动修复触发方式 - 加
eslint.format.enable: true:让 ESLint 在支持的文件类型(.js,.ts等)上接管格式化请求(注意:它只对可修复规则介入,不是全量重排) -
eslint.options.extensions必须包含你要处理的后缀,比如[".js", ".ts", ".jsx", ".tsx"];漏掉.tsx就不会检查 TSX 文件
调试插件不生效的常见断点
VSCode 控制台和 ESLint 自身日志是唯二可信线索。界面没报错 ≠ 配置成功,很多失败是静默跳过的。
- 按
Ctrl+Shift+P输入Developer: Toggle Developer Tools,切到 Console 标签页,保存文件时看有没有ESLint: Failed to load plugin类错误 - 在终端运行
npx eslint src/index.js --debug,观察插件是否被 resolve、规则是否被注册、有没有Rule 'xxx' was not found - 多根工作区(multi-root workspace)下,每个子文件夹必须各自有
.eslintrc.cjs;父级配置不会继承到子文件夹 - 如果用了
eslint-config-prettier,确认它放在extends最末尾,否则可能禁用掉你的自定义规则
最易被忽略的一点:自定义插件的 rules/xxx.js 文件里,meta.fixable 必须设为 "code" 或 "whitespace",否则即使规则触发,source.fixAll.eslint 也不会尝试修复它——VSCode 不会告诉你这个字段缺失,它只是安静地跳过。

















