Code Runner 运行 JS 无输出或报错因默认用 node -e 执行,不支持 require/import 等;应改为 "node $fileName"。ESLint 与 Prettier 冲突需装 eslint-config-prettier 并配置 extends。函数跳转失效常因缺 jsconfig.json、importModuleSpecifierEnding 设置不当或 ESLint 解析器错误。codeActionsOnSave 仅对 fixable 规则生效,需检查 eslint.validate 和配置格式。

为什么 Code Runner 运行 JS 时没输出或报错 ReferenceError
Code Runner 默认在“输出(OUTPUT)”面板运行代码,它不启动完整 Node.js 环境,而是用 node -e 执行脚本片段。这会导致:
• 全局变量(如 module、require)不可用
• import/export 语法直接报错
• process.argv 或文件路径相关逻辑失效
• 常见错误如 ReferenceError: require is not defined 或 SyntaxError: Cannot use import statement outside a module
解决办法:右键编辑器 → “Run Code Configuration” → 修改 code-runner.executorMap 中的 javascript 条目为:"node $fileName"(注意不是 node -e),并确保当前文件是独立可执行的 JS 文件。
ESLint 和 Prettier 同时启用却互相打架怎么办
两者职责不同但规则重叠,比如 quotes、semi、comma-dangle 都可能冲突。VSCode 不会自动协调它们的优先级。
必须显式禁用 ESLint 中与 Prettier 冲突的规则:
• 安装 eslint-config-prettier:npm install eslint-config-prettier --save-dev
• 在 .eslintrc.js 的 extends 数组末尾加入 "prettier"(顺序很重要,必须放最后)
• 检查 vscode settings.json 是否同时启用了两个 formatter:
→ 关闭 javascript.format.enable(设为 false),避免内置 JS formatter 干扰
→ 只保留 "editor.defaultFormatter": "esbenp.prettier-vscode"
否则保存时会出现格式反复“弹跳”:Prettier 格式化后 ESLint 又标红,再保存又格式化……
函数跳转失效?别只靠 F12,先检查这三个地方
VSCode 内置的“转到定义”在 JS 中依赖语言服务,不是单纯文本匹配。跳转失败通常卡在这三处:
• 项目根目录缺少 jsconfig.json 或 tsconfig.json(即使纯 JS 项目也建议加一个空的 jsconfig.json,内容为 {},否则跨文件引用无法解析)
• javascript.suggest.autoImports 设为 false(关掉后不会自动补全路径,但更不影响跳转;真正影响的是 javascript.preferences.importModuleSpecifierEnding,建议设为 "auto")
• ESLint 插件未激活或配置错误:如果 .eslintrc.js 里写了 parser: '@typescript-eslint/parser' 但没装对应包,整个语言服务可能降级为基础模式,导致跳转丢失上下文
验证方式:打开命令面板(Ctrl+Shift+P),输入 “Developer: Toggle Developer Tools”,看 Console 是否有 Failed to load parser 类错误。
editor.codeActionsOnSave 开了却没自动修 bug?
这个设置只对 ESLint 能“自动修复”的规则生效(即规则后面带 fixable: true)。像 no-console、no-unused-vars 是可修复的,但 eqeqeq、no-undef 就不行——前者需要人工判断是否改用 ===,后者要你先声明变量。
确认是否生效的方法:
• 在 JS 文件里写一行 console.log(1),保存后看有没有自动删掉(取决于你配的是 error 还是 warn)
• 查看 VSCode 底部状态栏,悬停在 ESLint 图标上,显示 “Fixable: X of Y problems”
• 如果完全没反应,检查 eslint.validate 是否包含 "javascript"(不是 "javascriptreact" 或漏写)
• 注意:若项目用了 eslint.config.mjs 新格式,老版本 ESLint 扩展可能不识别,需升级插件或改回 .eslintrc.js
jsconfig.json 的存在感——它不报错、不提醒,但缺了它,跨文件跳转、路径智能提示、甚至某些 import 自动补全都会静默退化。别等出问题才补。



















