Node.js运行时必须全局可用且版本≥14,否则VSCode调试器无法启动;需在系统终端验证node -v/npm -v输出,并确保PATH正确(Windows勾选Add to PATH,macOS/Linux推荐nvm),VSCode集成终端可能未继承shell环境,须显式配置node.runtimePath或terminal.env。

确认 Node.js 运行时是否真正可用
VSCode 本身不带 Node.js,所有调试、终端命令、插件功能都依赖系统级 Node.js 可执行文件。很多人配了半天 launch.json 却报 Cannot find module 或调试器灰掉,根本原因就是这一步没过。
- 在系统终端(非 VSCode 集成终端)运行
node -v和npm -v,必须有输出;若报 command not found,说明没装或 PATH 没生效 - Windows 用户安装时务必勾选 Add to PATH;macOS/Linux 强烈建议用
nvm管理版本,避免权限冲突和多版本混乱 - 即使终端能跑,VSCode 集成终端有时会继承错误 shell 环境——关掉所有终端窗口再重开,或在 VSCode 设置里显式配置
"node.runtimePath",值为which node输出的绝对路径(如/usr/local/bin/node)
launch.json 中 program 字段怎么填才不踩坑
program 是调试器启动入口,填错直接导致脚本不执行、断点无效、甚至静默失败。它不是“随便写个文件名”,而是必须匹配实际可执行的 JS 文件路径。
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 开发阶段推荐用
"${file}":只对当前打开的 JS 文件生效,适合快速验证单文件逻辑,但要求你每次 F5 前已保存且该文件是合法入口 - 项目级调试用
"${workspaceFolder}/index.js"或"${workspaceFolder}/app.js":确保路径真实存在,且是项目主入口;不要写src/index.js而实际构建后在dist/下运行 - ESM 项目(含
"type": "module")必须加环境变量:"env": {"NODE_OPTIONS": "--enable-source-maps"},否则断点位置错乱、require报错
ESLint + Prettier 自动修复与格式化的关键开关
装了插件不等于自动工作。VSCode 默认不启用保存即修复,很多团队代码风格依然混乱,问题就出在配置没对齐。
- 必须开启两项设置:
"editor.formatOnSave": true和"editor.codeActionsOnSave": {"source.fixAll.eslint": true} - 项目根目录要有
.eslintrc.js(或.eslintrc.cjs),且其中extends至少包含eslint:recommended或具体规则集;Prettier 规则需通过eslint-config-prettier关闭冲突项 - 如果用了 TypeScript,
parserOptions.project必须指向tsconfig.json,否则 ESLint 无法解析类型语法,大量no-unused-vars误报
用 nodemon 实现热重载调试的最小可行配置
手动 Ctrl+C → npm start → F5 太慢。nodemon 能监听变化并重启进程,但默认不支持 VSCode 断点附加——需要让调试器连上 nodemon 启动的 --inspect 进程。
- 本地安装:
npm install --save-dev nodemon - 修改
launch.json的 configuration:"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/nodemon","runtimeArgs": ["--inspect-brk", "${workspaceFolder}/index.js"] - 注意
--inspect-brk会让进程在第一行暂停,方便你设好断点再继续;去掉-brk则只开启 inspector,但首次断点可能错过 - 不要同时在
package.json里配"scripts": {"dev": "nodemon index.js"}并在 launch.json 里调用 npm —— 这会多一层 shell 封装,断点容易失效
node.runtimePath 没设对、program 指向了未编译的 TS 源码、或者 ESLint 配置里漏了 eslint-config-prettier 导致格式化和修复互相打架。这些细节不手动验证一遍,自动化就只是幻觉。

















