必须在launch.json中显式配置"runtimeExecutable"指向v18的绝对路径,如macOS下"/Users/xxx/.nvm/versions/node/v18.20.4/bin/node"或Windows下"C:\Users\xxx\.nvm\v18.20.4\node.exe";${env:NVM_BIN}/node不可靠,runtimeVersion仅校验不切换,process.execPath输出须与runtimeExecutable严格一致。

VSCode调试器用Node v22但项目依赖v18怎么办
不能靠降级VSCode或硬切系统Node,得让调试器明确使用v18。VSCode调试器不继承终端环境,runtimeExecutable必须显式指向nvm管理的v18路径,比如/Users/xxx/.nvm/versions/node/v18.20.4/bin/node(macOS)或C:\Users\xxx\.nvm\v18.20.4\node.exe(Windows)。别用${env:NVM_BIN}/node——Windows下NVM_BIN通常未设,Linux/macOS下若echo $NVM_BIN为空,调试会直接失败。
插件报Cannot find module './build/Release/xxx.node'
这不是路径错了,是ABI不匹配:VSCode 1.90+内置Electron 34 + Node v22.4.0,process.versions.napi为9;而你用npm install装的原生模块(如sqlite3、bcrypt)是按系统Node v18(napi=8)编译的。重编译必须带三参数:npm rebuild --napi-build-version=9 --runtime=electron --target=34.0.0。执行前先删掉插件目录下的node_modules/.pnpm和out/,否则旧二进制仍会被加载。
launch.json里runtimeVersion设了还是用错版本
runtimeVersion只是校验提示,不会自动切换Node。它只对type: "node"生效,且依赖nvm exec机制——在Windows上基本无效,在macOS/Linux上需确保nvm命令本身可用。真正起作用的只有runtimeExecutable。验证方式:在调试控制台里打印process.execPath,输出必须和runtimeExecutable值一致,否则配置没生效。
终端里node -v正确但F5调试断点灰掉
常见于ESM项目混用CommonJS调试配置。检查launch.json里type字段是否为小写"node"(不是"pwa-node"),request是否为"launch"(不是"attach")。若项目含"type": "module",还需加runtimeArgs:["--loader", "ts-node/esm"](TypeScript)或改用node --experimental-specifier-resolution=node index.js手动启动验证。最易忽略的是:V8 Inspector协议在Node v22和v18间有细微差异,断点映射失败往往不是代码问题,而是调试器没正确注入。


















