launch.json 配置不生效需检查 program 路径是否正确指向编译后文件、${workspacefolder} 是否存在、避免 runtimeexecutable、路径用正斜杠、ts 项目指向 .js 文件、node ≥ v12 用 launch 模式、重启 vscode 同步 nvm 版本、终端设为 powershell 并调编码、禁用 prettier 自动格式化仅用 eslint 修复、env 不继承系统变量需显式配置。

launch.json 配置不生效?检查 program 和 workspaceFolder 路径
常见现象是按下 F5 后提示 Cannot find module 'xxx' 或直接报错 ENOENT,根本原因往往是 program 字段指向了错误路径。VSCode 的 ${workspaceFolder} 是动态变量,但不会自动补全或校验是否存在该文件。
- 确认入口文件真实存在:比如你项目结构是
src/index.js,就别写成${workspaceFolder}/index.js - 避免使用
runtimeExecutable:这个字段已过时,新版 VSCode 推荐用program+args组合启动 - Windows 用户注意反斜杠:路径中不要手动写
C:\project\src\app.js,一律用正斜杠或双反斜杠,否则 JSON 解析失败 - 如果项目用了 TypeScript,
program必须指向编译后的.js文件(如${workspaceFolder}/dist/app.js),而非.ts源码
调试时断点不命中?优先排查 --inspect 和 node 版本兼容性
Node.js 从 v12 开始默认启用 --inspect,但旧版 launch.json 可能仍沿用 port: 9229 + attach 模式,而新项目更推荐 launch 模式直接启动带调试的进程。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 确保 Node.js 版本 ≥ v12.0.0:低于此版本需显式加
--inspect参数,且端口可能被占用 - 不要手动在终端跑
node --inspect app.js再去 attach——这容易和 VSCode 自动注入的调试器冲突 - 若用
nvm切换版本,每次切换后要重启 VSCode,否则调试器仍按旧版本协议通信,导致断点灰化 - 检查
skipFiles是否误写了node_modules/**:这会跳过所有第三方模块里的断点,包括你依赖的中间件
console 输出乱码或不完整?调整 integratedTerminal 的编码与缓冲策略
尤其在 Windows 下,中文日志显示为 或输出被截断,不是 Node.js 问题,而是 VSCode 终端的编码和缓冲设置没对齐。
- 在 VSCode 设置里搜索
terminal.integrated.env.windows,添加"NODE_OPTIONS": "--no-warnings"可减少干扰信息 - 关键项:
terminal.integrated.defaultProfile.windows设为PowerShell(非 Command Prompt),PowerShell 默认 UTF-8,兼容性更好 - 如果日志量大(如 stream pipe 或大量
console.log),加"console": "integratedTerminal"并禁用internalConsoleOptions,避免内部控制台缓冲溢出丢行 - 临时验证:在
app.js开头加process.stdout.setEncoding('utf8'),可强制输出编码,但治标不治本
ESLint + Prettier 冲突导致保存即报错?靠 codeActionsOnSave 精准触发
很多人把 "editor.formatOnSave": true 和 "editor.codeActionsOnSave": { "source.fixAll.eslint": true } 同时开启,结果格式化和 ESLint 自动修复互相打架,比如缩进变两空格又立刻被 Prettier 改回四空格。
- 只保留
"editor.codeActionsOnSave": { "source.fixAll.eslint": true },让 ESLint 插件统一接管格式+规则修复 - 确保项目根目录有
.eslintrc.cjs(或 .js/.json),且其中extends包含plugin:prettier/recommended,否则 ESLint 不知道 Prettier 规则 - 禁用 Prettier 的自动格式化:在设置里关掉
prettier.requireConfig和editor.formatOnSave,避免双重介入 - 验证方式:删掉一行代码,保存后看是否只出现 ESLint 提示(黄色波浪线),而不是先格式化再报错
launch.json 中 env 字段的继承关系——它不会自动合并系统环境变量,NODE_ENV=development 设了,但 process.env.PORT 还得靠 args 或外部 .env 文件传入。这点不厘清,本地调试和生产行为就容易不一致。










