根本原因是规则作用域或语言模式不匹配:eslint.validate未包含javascript和javascriptreact、no-unused-vars默认不检查函数参数、TS项目需用@typescript-eslint/no-unused-vars、Prettier与ESLint规则冲突未对齐、VSCode语言模式识别错误或配置被覆盖。

ESLint 插件没报错,但 no-unused-vars 不生效?
常见现象是变量明明没用,却没警告;或者改了配置后重启 VSCode 仍无效。根本原因通常是规则作用域或语言模式不匹配。
-
eslint.validate必须显式包含javascript和javascriptreact(React 项目),否则 JSX 文件里不会触发检查 -
no-unused-vars默认只检查顶层作用域,函数内未使用参数不会报,需配args: "none"才严格检查 - 如果项目用了 TypeScript,
no-unused-vars会被 TS 编译器覆盖,应改用@typescript-eslint/no-unused-vars - VSCode 设置里若同时启用了
editor.formatOnSave和eslint.format.enable,可能干扰校验逻辑,建议关掉后者
Prettier 和 ESLint 规则冲突导致保存后反复格式化?
典型表现:保存一次,代码缩进变两次;或单引号自动变双引号又弹回。这不是 bug,而是两者职责重叠且未对齐。
- 必须在
.eslintrc.*中extendsprettier,它会禁用所有与 Prettier 冲突的 ESLint 规则(如quotes、semi) -
.prettierrc里设"semi": true,就别在 ESLint 里再写semi: ["error", "always"],否则 ESLint 修完 Prettier 又反向修 - VSCode 设置中
"editor.defaultFormatter"必须指向esbenp.prettier-vscode,且"eslint.format.enable"设为false,避免双 formatter 竞争 - Vue 文件默认被 Prettier 忽略(
"disableLanguages": ["vue"]),若要格式化,得单独配vetur或改用prettier-plugin-vue
为什么 console.log() 没被 no-console 拦住?
不是规则失效,而是规则等级设成了 "off" 或 "warn",VSCode 默认不把 warning 当错误标红,只显示在 Problems 面板右下角小图标里。
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
- 想让它中断构建或标红,得把规则值改成
["error", "always"],不是"error"单字符串 - 某些框架(如 Create React App)自带 ESLint 配置,会覆盖你本地的
.eslintrc,检查package.json的eslintConfig字段是否在抢优先级 - 如果只在开发环境允许
console,可用/* eslint-disable no-console */单行注释临时绕过,但别滥用 - 更稳妥的做法是用
debugger替代console.log,配合 VSCode 断点调试,既干净又可追溯
插件装了,但 JS 文件里没语法提示和自动补全?
大概率是 VSCode 没识别出当前文件的语言模式,或核心语言支持插件缺失。
- 右下角状态栏看当前语言是否为
JavaScript,不是的话点它 → “Configure Language for File Extension” → 选JavaScript - 确保已安装官方
JavaScript (ES6) code snippets插件,它提供cl→console.log()这类快捷片段 - 如果用了 Babel 或 TypeScript,需额外装
Babel JavaScript或ES7+ React/Redux/React-Native snippets才支持新语法补全 - 检查
settings.json是否误加了"javascript.suggest.autoImports": false,这会关闭自动导入建议
真正让 JS 代码易维护的,从来不是插件数量,而是每个插件是否在它该管的地方精准发力——ESLint 管逻辑和规范,Prettier 管视觉排版,补全插件管输入效率。三者边界模糊时,问题就藏在配置细节里。

















