根本原因是VSCode启动时未加载shell配置文件或系统PATH未写入Node路径;需在VSCode终端执行node -v验证,无输出则须彻底重启并修正~/.zshrc(macOS/Linux)或系统环境变量(Windows),再配合terminal.integrated.env.*注入PATH。

VSCode 里 node -v 报 command not found,不是插件没装好,而是环境变量根本没继承进来——所有后续调试、运行、任务都卡在这一步。
node -v 在系统终端能跑,但在 VSCode 终端里失效
这是最常见也最容易误判的问题。它和 VSCode 设置、插件、launch.json 都无关,纯粹是进程启动时没加载你的 shell 初始化文件(比如 ~/.zshrc)或系统 PATH 没写入 Node.js 路径。
- macOS/Linux:从 Dock 或 Spotlight 启动 VSCode,
which node输出的路径(如/opt/homebrew/bin/node)通常不在 VSCode 继承的PATH中;改完~/.zshrc后必须彻底退出所有 VSCode 窗口,再从终端执行code --no-sandbox .启动 - Windows:安装 Node.js 时漏选 “Add to PATH”,系统变量里压根没有
C:Program Files odejs;需手动添加到「系统变量 → Path」,注意路径中不能有中文、空格,斜杠方向统一用/或\ - 验证唯一标准:在 VSCode 内置终端(
Ctrl + `)里直接敲node -v;没输出就别配launch.json,也别点 F5 —— 所有操作都是空转
launch.json 中 program 字段写死导致调试失败
VSCode 自动生成的 launch.json 默认是 "program": "${workspaceFolder}/app.js",但你实际入口可能是 index.js、server.js,甚至当前正编辑的任意文件。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 通用解法:把
program改成"${file}",这样按 F5 就调试当前打开的 JS 文件,不用每次改配置 - 注意:这个值只对可直接运行的 JS 文件有效;如果文件含
import但项目没设"type": "module",会报Cannot use import statement outside a module - TypeScript 项目别直接指向
.ts文件;要确保已编译出.js和.js.map,且program指向的是生成后的.js路径
code-runner 插件运行 JS 脚本出错的典型场景
code-runner 的默认命令极简:node $fileName,不处理编码、模块类型、输入流,也不读 package.json,所以容易踩坑。
- Windows 中文路径乱码:在 VSCode 设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - 报
Cannot use import statement outside a module:先确认项目根目录有package.json且含"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" - 遇到
process.stdin就假死:这是code-runner固有限制,它不支持交互式输入;换用内置终端手动运行,或改用调试模式(F5)
调试器提示 Cannot find runtime 'node' 或断点不命中
即使 node -v 在终端里跑通了,launch.json 仍可能报这个错——因为调试器走的是另一套查找逻辑,不完全依赖终端的 PATH。
- 检查
launch.json是否显式写了"runtimeExecutable";如果写了但路径不对,删掉这行,让调试器走默认查找 - 用了
nvm/fnm等版本管理工具:调试器默认不识别切换逻辑;稳妥做法是在launch.json中写死路径,例如:"runtimeExecutable": "~/.nvm/versions/node/v18.17.0/bin/node" - 断点不生效常因启动方式不匹配:比如用
ts-node启动 TypeScript,但调试器配的是普通node;应改用node --loader ts-node/esm模式,并在runtimeArgs中配置
真正卡住人的从来不是配置项本身,而是 VSCode 终端和调试器这两条路径各自读取环境变量的方式完全不同——一个靠 shell 启动时加载,一个靠 launch.json 或全局 PATH 查找。不区分清楚,就会反复在“明明能跑”和“就是调不了”之间打转。

















