vscode里node -v报command not found,根本原因是终端未继承shell环境变量path:macos/linux需设terminal.integrated.shellargs为["-l"]启用登录shell并重启终端;windows应重装node.js并勾选“add to path”或手动补全用户环境变量路径。

VSCode里node -v报command not found怎么办
这不是VSCode的问题,是它根本没找到系统里的node命令。VSCode内置终端(Ctrl+`)启动时,会继承你系统默认shell的PATH,而不是你手动在PowerShell或iTerm里配好的环境。
- 先在VSCode终端里直接运行
node -v和npm -v——必须都输出版本号才算过关;如果报command not found,说明PATH没生效 - Windows用户检查安装Node.js时是否勾选了“Add to PATH”;没勾就重装,别试图手动加路径——容易漏掉
npm对应的node_modules/.bin - macOS/Linux用
nvm的注意:nvm use 18.18.2只对当前终端会话有效,VSCode启动时不会自动执行它;要么用nvm alias default 18.18.2设默认版本,要么在launch.json里显式写"runtimeExecutable": "/opt/homebrew/bin/node"
为什么终端能跑node,但F5调试却失败
因为VSCode调试器不走终端PATH,它依赖launch.json里runtimeExecutable或系统PATH的双重校验。哪怕终端里node -v正常,调试仍可能静默失败。
- 打开
.vscode/launch.json,确认配置里没写错"type": "node"——拼成"nod"e或大小写错误都会让调试器直接忽略该配置 - 检查
"request": "launch"是否被误改成"attach":前者是F5启动,后者要先手动node --inspect,混用会导致点绿色按钮毫无反应 - 删掉
launch.json里所有多余字段(比如preLaunchTask、postDebugTask),从最简配置开始验证:
{
"version": "0.2.0",
"configurations": [{
"type": "node",
"request": "launch",
"name": "Launch",
"program": "${workspaceFolder}/index.js"
}]
}
npm run dev能跑,但调试时process.env.NODE_ENV是undefined
因为npm start背后是node加一堆参数,而VSCode调试默认不复用package.json里的scripts逻辑,环境变量得手动塞进去。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 对照
package.json里对应脚本的完整命令,把"args"和"env"补全。例如"scripts": {"dev": "node --loader ts-node/esm src/main.ts"},那launch.json就得写:
"args": ["--loader", "ts-node/esm", "${workspaceFolder}/src/main.ts"],
"env": { "NODE_ENV": "development" }
- ESM项目必须加
"env": { "NODE_OPTIONS": "--enable-source-maps" },否则断点打在TS文件上会失效 -
"skipFiles": ["<node_internals>/**"]</node_internals>不是可选项——不加的话,单步调试时会频繁跳进node_modules底层代码,比如internal/modules/cjs/loader.js,打断思路
调试时断点变空心圆、程序直接跑完
空心圆=断点未激活,不是代码问题,是源码映射或启动模式没对齐。
- 先按
Ctrl+S保存文件——VSCode默认“运行未保存文件”会失败,尤其TypeScript项目,改了TS没编译,JS文件还是旧的 - TypeScript项目必须确保
tsconfig.json里"sourceMap": true开启,且outDir路径和launch.json中"program"指向的JS文件路径一致 - 检查
launch.json里"outFiles"是否匹配编译后路径,比如"outFiles": ["${workspaceFolder}/dist/**/*.js"],否则调试器找不到映射关系 - 如果用了
nodemon,别在launch.json里直接调nodemon——它会fork子进程,VSCode抓不到;改用"request": "attach"模式,先终端跑nodemon --inspect=9229 src/index.ts,再连端口
最常被忽略的是:TypeScript项目里program字段必须指向编译后的.js文件,而不是.ts源文件;哪怕你写了"sourceMaps": true,路径不对照样断点失效。










