vscode不加载node.js模块,本质是无法找到系统已安装的node可执行文件;macos/linux因未读取shell配置导致path缺失,需在设置中手动补全path并指定runtimeexecutable路径,program须指向真实js文件,esm项目需声明type: "module"并启用source maps。

VSCode 本身不加载 Node.js 运行模块——它只是调用你系统里已安装的 node 可执行文件。所谓“加载”,本质是确保 VSCode 能正确找到并启动这个二进制程序,否则所有调试、断点、process.env 都会失效。
为什么终端能跑 node,但 VSCode 调试报 “command 'node' not found”
这是 macOS/Linux 下最典型的环境继承问题:VSCode 启动时没读取你的 shell(如 zsh/bash)配置,导致 PATH 里没有 node 路径。
- 在终端运行
which node,复制输出(比如/opt/homebrew/bin/node或/Users/you/.nvm/versions/node/v18.18.2/bin/node) - 打开 VSCode 设置(
Cmd + ,),搜索terminal.integrated.env.osx(macOS)或terminal.integrated.env.linux(Linux),添加:"terminal.integrated.env.osx": {"PATH": "/opt/homebrew/bin:${env:PATH}"} - 重启 VSCode 集成终端(关闭再开),再试
node -v
launch.json 中 program 和 runtimeExecutable 到底填什么
program 是你要调试的 JS 入口文件路径;runtimeExecutable 是你要用的 node 命令位置——两者不能混淆,且都必须真实存在。
-
program推荐写成"${workspaceFolder}/app.js",而不是"${file}"(后者只对当前编辑器标签有效,切换文件就崩) - 如果你用
nvm切换 Node 版本,runtimeExecutable必须显式指定,例如:"runtimeExecutable": "/Users/you/.nvm/versions/node/v18.18.2/bin/node"
- ESM 项目(含
type: "module"的package.json)必须确保program指向的是 JS 文件(不是.ts),且建议加"env": {"NODE_OPTIONS": "--enable-source-maps"}
断点不触发?先查这三个配置项
断点灰色、F5 按下无反应、console.log 不输出——90% 是以下三项没配对:
-
request字段必须是"launch"(启动新进程)或"attach"(连已有进程),别写错成"lauch"这类拼写 -
console设为"integratedTerminal"时,某些readline或child_process场景会卡住;临时改成"externalTerminal"更可靠 -
env里写的环境变量(如NODE_ENV)不会自动从.env文件加载,必须手动写死:"env": {"NODE_ENV": "development", "PORT": "3001"}
真正麻烦的从来不是写配置,而是不同 shell、nvm 版本、ESM/CommonJS 混用时,node 找不到、入口文件解析失败、source map 错位这三件事交叉发生——每次出问题,优先验证 which node 输出和 program 对应的文件是否存在,比重写 launch.json 更快。











