能直接在vscode里运行node命令、看到控制台输出且断点可命中才算真正跑起来;需彻底退出vscode并重开以同步系统path,确保内置终端执行node -v/npm -v成功,再配置launch.json使用npm start或attach模式调试nodemon服务。

能直接在 VSCode 里运行 node 命令、看到控制台输出、且断点可命中,才算真正跑起来——不是“文件右键 Run Code”那种假运行。
验证 node 和 npm 是否真被 VSCode 认识
很多人卡在这步却以为是调试配置问题。关键不是“装了 Node.js”,而是 VSCode 启动时读到的环境变量里有没有 node 路径。
- 关掉所有 VSCode 窗口(macOS 在 Dock 右键选「退出」,Windows 在任务管理器确认
Code.exe已结束) - 新开系统终端(不是 VSCode 内置终端),执行:
which node(macOS/Linux)或where node(Windows),确认路径指向你安装的 Node.js(比如/usr/local/bin/node或C:\Program Files\nodejs\node.exe) - 再打开 VSCode,按
Ctrl+`打开内置终端,立刻执行node -v和npm -v—— 这次的结果才代表 VSCode 能调用到 - 如果失败:Windows 用户检查安装时是否勾选了
Add to PATH;macOS/Linux 用nvm的,确认source ~/.nvm/nvm.sh已写入~/.zshrc或~/.bash_profile,并新开终端验证
用 launch.json 启动服务(非单文件)
默认生成的 "program": "${file}" 只适合 node index.js 这种单文件场景。跑 Express、Koa 等服务,必须改配置。
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
- 按
Ctrl+Shift+P→ 输入Debug: Open Configuration→ 选Node.js,会生成.vscode/launch.json - 把
"program"改成"npm",加"args": ["start"],再加"console": "integratedTerminal",否则看不到npm start的日志输出 - 确保
package.json里有"scripts": {"start": "node index.js"}或类似命令(如"start": "nodemon index.js") - 别把
"program"指向nodemon本身——VSCode 调试器不支持热替换,nodemon必须用attach模式
用 attach 模式调试 nodemon 服务
想边改代码边自动重启又保持断点?不能靠 launch,得用 attach。
- 先在终端手动启动:
nodemon --inspect-brk index.js(--inspect-brk表示启动即暂停,等调试器连接) - 在
launch.json中新增一个配置:{ "type": "node", "request": "attach", "name": "Attach to nodemon", "port": 9229, "address": "localhost", "localRoot": "${workspaceFolder}", "remoteRoot": "${workspaceFolder}" } - 注意端口:
nodemon --inspect-brk默认用9229,不是92(旧文档常写错) - 启动服务后再点 VSCode 调试面板里的
Attach to nodemon,断点才会生效
常见错误现象和对应解法
这些报错基本都指向同一类底层问题:
-
Cannot find runtime 'node':VSCode 根本没找到node,回到第一步重验环境变量 - 断点灰色、hover 显示 “unbound breakpoint”:要么文件路径没对上(
localRoot/remoteRoot配错),要么用了nodemon却没切attach模式 - 服务启动但浏览器打不开
http://localhost:3000:检查app.listen(3000)是否写了,端口是否被占用(lsof -i :3000或netstat -ano | findstr :3000) -
ReferenceError: require is not defined:你在 HTML 里直接<script></script>引了 Node.js 代码——这是浏览器环境,不是 Node.js
最易被忽略的是:VSCode 内置终端的环境变量,和系统终端不完全同步;哪怕你改了 PATH,也必须彻底退出 VSCode 进程再重开,否则调试器永远读不到新路径。










