根本原因是调试器不继承shell配置且语言服务未识别项目结构:调试器依赖系统PATH或runtimeExecutable硬编码路径,不读~/.zshrc;智能提示失效则多因缺失jsconfig.json/tsconfig.json或插件冲突。

node 命令在终端能跑,但调试断点不生效、智能提示失效、甚至 launch.json 报 "Cannot find runtime 'node'"——这不是插件没装对,而是 VSCode 的环境加载逻辑被误解了。根本问题出在「调试器不继承 shell 配置」和「语言服务未识别项目结构」这两条链路上。
VSCode 终端能用 node,但调试器报错找不到
调试器和终端走的是两套环境加载机制:终端会读 ~/.zshrc(macOS/Linux)或系统 PATH(Windows),而调试器默认只查系统级 PATH 或你硬写的 runtimeExecutable。
- macOS/Linux:改完
~/.zshrc后必须彻底退出 VSCode(不只是关窗口),再从终端执行code .启动;否则调试器仍看不到新 PATH - Windows:安装 Node.js 时没勾选 “Add to PATH”,调试器就完全找不到
node.exe;手动添加后需确认是“系统变量”而非“用户变量”,且要重启全部 VSCode 窗口 - 用了
nvm/fnm:调试器不执行 shell 切换逻辑,runtimeExecutable必须写死路径,比如"~/.nvm/versions/node/v20.15.0/bin/node" - 验证方式:在 VSCode 内置终端里运行
which node(macOS/Linux)或where node(Windows),再打开 Debug Console 输入process.version—— 两者都返回才真正对齐
launch.json 中 program 字段总指向错误路径
program 是调试器启动进程的唯一入口,写错就等于让它去一个不存在的地址敲门。它不是语法检查项,而是语义执行点。
生成Blender Python (bpy)脚本,该脚本使用node_groups API和GeometryNodeTree接口程序化地创建几何节点修改器树,用于参数化3D资产生成。
- TS 项目写
"program": "${workspaceFolder}/src/server.ts"→ 必须指向编译后的.js文件,比如"dist/server.js" - ESM 项目没在
package.json里设"type": "module"→ 调试器按 CommonJS 解析,import全报错 - 用
nodemon时硬塞runtimeExecutable: "nodemon"→ 断点必然失效;正确做法是删掉这行,改用request: "attach"模式,先终端跑nodemon --inspect-brk src/server.js,再连过去 - 忽略
cwd→require('./config')因工作目录不对而报Cannot find module,加一句"cwd": "${workspaceFolder}"就解决
智能提示失效,真不是 node 环境问题
只要 node -v 和 npm run dev 能跑,说明 Node.js 运行时没问题。补全/跳转/类型提示挂了,90% 是 VSCode 没识别出项目结构或语言服务被干扰。
- JS 项目缺
jsconfig.json:哪怕只是空对象{},也能激活基础语言服务 - TS 项目
tsconfig.json里没开"sourceMap": true→ 调试时无法映射源码,断点打在.ts上无效 - 禁用所有非官方 JS/TS 插件:像
JavaScript (ES6) code snippets这类老插件会和内置语言服务冲突,导致跳转失败 - monorepo 或软链接依赖(
npm link)下,require()报Cannot find module,本质是语言服务没识别node_modules结构,不是node找不到模块
保存不自动格式化,三个配置必须同时启用
保存时没触发 Prettier + ESLint 自动修复,不是插件没装,而是 VSCode 配置没对齐真实项目结构。
- 必须同时启用:
editor.formatOnSave、editor.codeActionsOnSave,以及项目根目录存在合法的.eslintrc.js和.prettierrc - 缺一不可:哪怕
.eslintrc.js里只有一行module.exports = {},也比没有强;否则 VSCode 不知道该调哪个规则集 - ESM 项目若用
code-runner插件,需手动改其executorMap:把javascript对应值设为"node --experimental-specifier-resolution=node $fileName"
~/.zshrc 或 PATH 后,不彻底重启 VSCode,或者不从终端启动,那所有配置都只是纸上谈兵。

















