node.js未正确配置系统path导致node -v和npm -v在系统终端报错,vscode终端也无法识别;需重装node.js并勾选“add to path”,或手动将安装路径(如c:program files odejs)加入系统环境变量,并完全退出重启vscode。

node -v 和 npm -v 在系统终端里跑不通,别配 launch.json
VSCode 调试器和终端都靠系统 PATH 找 node 和 npm,不是靠插件或设置。如果在系统终端(比如 Windows 的 cmd/PowerShell、macOS 的 Terminal)里执行 node -v 或 npm -v 报错,说明 Node.js 根本没进环境变量——此时所有 VSCode 操作都会失败。
- Windows 安装时漏勾
Add to PATH?重装 LTS 版,务必勾选;或手动把C:Program Files odejs加进系统环境变量Path - 路径含中文或空格(如
D:我的项目 odejs)?npm 会静默出错,必须重装到纯英文无空格路径 - macOS/Linux 用
nvm?确认source ~/.nvm/nvm.sh已写入~/.zshrc(或~/.bash_profile),且新终端已加载 - 改完 PATH 后,必须完全退出 VSCode(macOS Dock 右键「退出」,Windows 任务管理器确认
Code.exe已结束),再重启打开项目
别用 Code Runner 插件跑 Node.js 项目
Code Runner 默认绕过 package.json 的 type 字段和 exports 配置,直接调 node index.js,在 ES Module 场景下大概率报 Cannot use import statement outside a module。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 真实开发中,始终用 VSCode 内置终端(
Ctrl+`)执行node index.js或npm start,行为与部署环境一致 - 若项目
package.json有"type": "module",确保入口文件是.mjs后缀,或显式加--experimental-modules(Node.js v14+ 不再需要) -
Code Runner的Ctrl+Alt+N仅适合单文件快速验证,正式开发建议禁用
launch.json 中 program 字段写死就废了
VSCode 自动生成的 launch.json 默认是 "program": "${workspaceFolder}/app.js",但你项目入口可能是 src/index.js、server.js 或其他名字——不改就 F5 报错 Cannot find module 或断点不命中。
- 调试前先确认当前要跑的文件路径,设为
"program": "${file}"(当前打开文件)或"program": "${workspaceFolder}/src/index.js"(固定入口) - 想调试
npm start?把"program"改成"npm","args"设为["start"],并加"console": "integratedTerminal",否则看不到启动日志 - 用
nodemon热重载?不能直接在launch.json里调它——必须用 attach 模式:命令行先跑nodemon --inspect-brk index.js,再在配置里设"type": "node"、"request": "attach"、"port": 9229
runtimeExecutable 不配,多版本 Node.js 就乱套
如果你用 nvm 或手动装了多个 Node.js 版本,VSCode 调试器默认按 PATH 顺序找 node,可能和终端里看到的不是同一个,导致源码映射失败、require 行为异常、断点不触发。
- 在
.vscode/launch.json里显式写"runtimeExecutable": "/usr/local/bin/node"(macOS/Linux)或"runtimeExecutable": "C:\Program Files\nodejs\node.exe"(Windows) - 验证是否生效:在代码里加
console.log(process.execPath),对比调试输出路径和runtimeExecutable是否一致 - 不确定路径?终端里运行
which node(macOS/Linux)或where node(Windows)
node 命令本身在 VSCode 终端里就不可用——这点容易被跳过,却决定了后续所有操作是否成立。










