根本原因是VSCode GUI启动未继承shell的PATH:Windows需检查系统环境变量Path是否含Node路径,macOS/Linux需确认~/.zshrc等配置含export PATH并彻底重启VSCode;最稳方案是在系统终端执行code .启动。

node 命令在 VSCode 终端里根本跑不起来?先看环境有没有继承
不是 VSCode 有问题,是它没拿到你 shell 里的 node。系统终端能跑 node -v,但 VSCode 内置终端(Ctrl + `)报 command not found,说明 GUI 启动的 VSCode 没加载你的 PATH。
Windows 用户检查「系统属性 → 环境变量」里 Path 是否含 C:\Program Files\nodejs\;macOS/Linux 用户确认 ~/.zshrc 或 ~/.bash_profile 有 export PATH="/usr/local/bin:$PATH",且不是只 source 了没重启 VSCode——必须完全关闭再打开,Developer: Reload Window 不管用。
更稳的办法:关掉所有 VSCode 窗口,在系统终端执行 code . 启动项目,这样环境变量 100% 继承。
CommonJS 脚本直接 node index.js 就行,但要注意这三点
CommonJS 模块不需要 "type": "module",也不强制改后缀,只要文件本身是 require() + module.exports 风格,node 默认就按 CommonJS 解析。
-
package.json里别写"type": "module",写了就会让.js文件被当 ES Module 处理,触发Cannot use import statement outside a module - 路径别用
./src/index.js这种相对写法——VSCode 终端当前工作目录可能不是项目根目录,应确保你在项目根目录下开终端,或用绝对路径(如node src/index.js) - 如果脚本里用了
__dirname或require.resolve,注意node启动时的当前目录会影响这些值,建议统一在项目根目录运行
为什么 require('lodash') 报 Cannot find module?查 node_modules 位置
CommonJS 的模块查找规则很实在:从当前执行文件所在目录开始,逐级往上找 node_modules,直到根目录。所以 node src/index.js 会以 src/ 为起点搜,而不是项目根目录。
常见错误现象:
- 在项目根目录下
npm install lodash,但执行node src/index.js时报错——因为src/下没有node_modules - 用
code-runner插件执行,它默认以当前文件所在目录为工作目录,行为和你手动进src/再node index.js一样
解决办法很简单:进项目根目录再运行,或者用 node -r @babel/register src/index.js(如果用了 Babel),但最干净的做法是始终在项目根目录开终端,然后 node src/index.js。
调试时断点不命中?别乱加 runtimeExecutable
CommonJS 项目一般不需要显式配置 runtimeExecutable。VSCode 调试器默认走 PATH 查找 node,只要终端里 node -v 和调试时 console.log(process.execPath) 输出一致,就没问题。
容易踩的坑:
- 手填了
"runtimeExecutable": "/usr/local/bin/node",但终端里实际用的是 nvm 切的/Users/xxx/.nvm/versions/node/v18.19.1/bin/node,导致调试器和终端行为不一致 -
launch.json里"program"指向了 TypeScript 源文件(如src/index.ts)——CommonJS 调试只认编译后的.js文件 - 没加
"console": "integratedTerminal",日志全打在 Debug Console 里,中文乱码或输出延迟,误以为脚本卡住
真正要盯住的只有两个地方:终端里 node -v 能否成功,以及 launch.json 中 program 指向的是真实存在的、可被 node 直接执行的 .js 文件。


















