VSCode中node命令报错是因未加载shell配置或PATH未正确设置;code-runner乱码、ESM报错、stdin假死需分别配置编码、模块类型和改用终端/F5调试;launch.json断点失效主因是路径错误、source map未对齐或未指定真实JS文件。

VSCode 里执行 node -v 报错 “command not found”
这不是 VSCode 设置问题,也不是插件没装对——根本原因是它没拿到系统里的 node 命令路径。终端里能跑 node -v,但 VSCode 内置终端(Ctrl+`)里不行,说明启动时没加载 shell 初始化文件。
- macOS/Linux:运行
which node看实际路径(比如/opt/homebrew/bin/node),确认该路径已加进~/.zshrc或~/.bash_profile的export PATH="...:$PATH"中;改完必须彻底退出 VSCode(不只是关窗口),再从终端执行code .启动 - Windows:打开「系统属性 → 高级 → 环境变量」,检查
C:\Program Files\nodejs\是否在「系统变量」的PATH里;没加就手动添,或者重装 Node.js 并务必勾选 “Add to PATH” - 验证方式:在 VSCode 内置终端里直接敲
node -v—— 没输出就别配launch.json,所有后续调试都会失败
code-runner 执行 JS 文件乱码、卡死或不支持 import
这个插件默认用 node $fileName,但没处理编码、模块类型和标准输入流,尤其在中文路径、ESM 项目或带 process.stdin 的脚本里很容易出问题。
- Windows 中文乱码:在 VSCode 设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - ESM 报错
Cannot use import statement outside a module:确保项目根目录package.json有"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" - 遇到
process.stdin就假死:code-runner不支持交互式输入,换用内置终端手动运行,或改用 F5 调试模式(它会捕获输入)
launch.json 里断点不命中,提示 “Cannot launch program because corresponding JavaScript cannot be found”
这不是代码写错了,是调试器压根找不到可执行的 JS 文件,或者源映射(source map)没对齐。
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
- 单文件调试:用
"program": "${file}",别写死路径 - 后端项目:显式指定入口,比如
"program": "${workspaceFolder}/src/server.js";TS 项目必须指向编译后的.js文件(如dist/server.js),不能指.ts源文件 - ESM 项目:除了
package.json设"type": "module",还得加"runtimeArgs": ["--experimental-specifier-resolution=node"] - 工作目录很重要:加
"cwd": "${workspaceFolder}",否则require('./config')可能因路径解析失败而报Cannot find module
用 nodemon 或 ts-node 调试时断点失效
这类工具会接管进程启动逻辑,VSCode 默认的 launch 模式无法稳定附加,强行配 runtimeExecutable 容易断连或跳过断点。
-
nodemon:不要在launch.json里设runtimeExecutable;改用attach模式——终端先跑nodemon --inspect-brk src/server.js,再在launch.json新增一个"request": "attach"配置连过去 -
ts-node:用"type": "pwa-node"(新版推荐),配"runtimeExecutable": "ts-node",并确保tsconfig.json里有"sourceMap": true且.js.map和.js在同一目录
最常被忽略的是:调试器只认真实存在的 JS 文件路径,不认构建前的源码或别名路径。哪怕 package.json 里写了 "main": "index.js",调试时也得明确告诉它具体文件在哪,不能靠猜测。

















