vscode中node命令报错是因未加载shell配置或path未正确设置;code-runner乱码、esm报错、stdin假死需分别配置编码、模块类型和改用终端/f5调试;launch.json断点失效主因是路径错误、source map未对齐或未指定真实js文件。

VSCode 里执行 node -v 报错 “command not found”
这不是 VSCode 设置问题,也不是插件没装对——根本原因是它没拿到系统里的 node 命令路径。终端里能跑 node -v,但 VSCode 内置终端(Ctrl+`)里不行,说明启动时没加载 shell 初始化文件。
- macOS/Linux:运行
which node看实际路径(比如/opt/homebrew/bin/node),确认该路径已加进~/.zshrc或~/.bash_profile的export PATH="...:$PATH"中;改完必须彻底退出 VSCode(不只是关窗口),再从终端执行code .启动 - Windows:打开「系统属性 → 高级 → 环境变量」,检查
C:\Program Files\nodejs\是否在「系统变量」的PATH里;没加就手动添,或者重装 Node.js 并务必勾选 “Add to PATH” - 验证方式:在 VSCode 内置终端里直接敲
node -v—— 没输出就别配launch.json,所有后续调试都会失败
code-runner 执行 JS 文件乱码、卡死或不支持 import
这个插件默认用 node $fileName,但没处理编码、模块类型和标准输入流,尤其在中文路径、ESM 项目或带 process.stdin 的脚本里很容易出问题。
- Windows 中文乱码:在 VSCode 设置中搜
code-runner.executorMap,把javascript对应值改成:"node -r utf-8 $fileName" - ESM 报错
Cannot use import statement outside a module:确保项目根目录package.json有"type": "module",再把 executor 改成:"node --experimental-specifier-resolution=node $fileName" - 遇到
process.stdin就假死:code-runner不支持交互式输入,换用内置终端手动运行,或改用 F5 调试模式(它会捕获输入)
launch.json 里断点不命中,提示 “Cannot launch program because corresponding JavaScript cannot be found”
这不是代码写错了,是调试器压根找不到可执行的 JS 文件,或者源映射(source map)没对齐。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 单文件调试:用
"program": "${file}",别写死路径 - 后端项目:显式指定入口,比如
"program": "${workspaceFolder}/src/server.js";TS 项目必须指向编译后的.js文件(如dist/server.js),不能指.ts源文件 - ESM 项目:除了
package.json设"type": "module",还得加"runtimeArgs": ["--experimental-specifier-resolution=node"] - 工作目录很重要:加
"cwd": "${workspaceFolder}",否则require('./config')可能因路径解析失败而报Cannot find module
用 nodemon 或 ts-node 调试时断点失效
这类工具会接管进程启动逻辑,VSCode 默认的 launch 模式无法稳定附加,强行配 runtimeExecutable 容易断连或跳过断点。
-
nodemon:不要在launch.json里设runtimeExecutable;改用attach模式——终端先跑nodemon --inspect-brk src/server.js,再在launch.json新增一个"request": "attach"配置连过去 -
ts-node:用"type": "pwa-node"(新版推荐),配"runtimeExecutable": "ts-node",并确保tsconfig.json里有"sourceMap": true且.js.map和.js在同一目录
最常被忽略的是:调试器只认真实存在的 JS 文件路径,不认构建前的源码或别名路径。哪怕 package.json 里写了 "main": "index.js",调试时也得明确告诉它具体文件在哪,不能靠猜测。










