vscode终端执行node index.js失败,90%是因node命令未被shell找到:macos/linux需确保~/.zshrc加载nvm并设shellargs为["-l"]后彻底重启;windows需重装node时勾选add topath或手动添加路径并重启vscode。

直接在 VSCode 内置终端里执行 node index.js 就行,但前提是终端真能调用到 node 命令——90% 的失败不是脚本写错了,而是 node 根本没被 shell 找到。
终端报 command not found: node
这是最常卡住的第一步。VSCode 终端用的是系统 shell(macOS/Linux 默认 zsh,Windows 默认 PowerShell),但它启动时未必加载了你配置的 PATH。
- 先在系统终端(不是 VSCode 里的)运行
which node(macOS/Linux)或where node(Windows),确认路径存在且正确(如/usr/local/bin/node或C:\Program Files\nodejs\node.exe) - macOS + nvm:检查
~/.zshrc是否有source ~/.nvm/nvm.sh,改完后必须彻底退出 VSCode(Dock 右键「退出」),再重新打开 - Windows:重装 Node.js 官网 .msi 包,安装时务必勾选
Add to PATH;若已装过,手动把C:\Program Files\nodejs\加进「系统环境变量」的PATH,然后彻底关闭 VSCode 进程再重开 - 验证是否生效:VSCode 里按
Ctrl+`打开终端,立刻跑node -v—— 有输出才算真正就位
node index.js 报 Cannot find module
不是模块丢了,是当前工作目录不对。VSCode 终端不认你正在编辑的文件位置,只认 shell 的 pwd(当前路径)。
- 右键资源管理器里的
index.js→ 「在集成终端中运行」,VSCode 会自动cd到该文件所在目录再执行 - 手动执行前,先用
pwd(macOS/Linux)或Get-Location(PowerShell)确认当前路径,再用ls或dir看index.js是否真在那儿 - 别依赖「当前打开的标签页」,终端完全不感知这个状态
ES Module 报 Cannot use import statement
Node.js 默认按 CommonJS 模式加载 .js 文件,import 语法会直接崩,和 VSCode 无关。
- 方案一:把文件改成
index.mjs后缀,再运行node index.mjs - 方案二:在项目根目录的
package.json里加"type": "module",之后node index.js就能识别import - 注意:
code-runner插件默认不读package.json,所以它跑 ESM 脚本一定会报错,除非你手动改executorMap加上--experimental-specifier-resolution=node
为什么 Ctrl+Alt+N 没反应或静默失败
Code Runner 不是万能快捷键,它背后还是调 node 命令,且对上下文很敏感。
- 文件必须已保存(不能是
Untitled-1),且后缀要是.js、.mjs等它识别的类型 -
code-runner.runInTerminal必须设为true,否则输出进 Output 面板,遇到process.stdin就卡死 - 如果脚本里用了
require('./config')或fs.readFile('data.json'),默认"node $fileName"很可能因路径错乱找不到文件,应改成"cd $dir && node $fileName" - 传命令行参数(如
--port 3001)或需要断点调试时,别硬扛 Ctrl+Alt+N,直接切终端手敲或按 F5 调试更可靠
最易被忽略的一点:VSCode 从不自带 node,它只是个调用者。哪怕插件装满一屏幕,只要 which node 在系统终端里都返回空,所有运行和调试都是空中楼阁。











