VSCode调试Node.js失败主因是launch.json配置错误:program未指向可执行JS入口文件、路径未用${workspaceFolder}正确声明、Node未启用--inspect协议;断点不触发需先验证此三项。

VSCode 调试 Node.js 项目不需要装额外插件,只要 launch.json 配置对、入口路径写准、断点设在可执行行,就能直接进调试器看变量和调用栈。
为什么 launch.json 的 program 字段不能写死?
写死路径(比如 "program": "./app.js")会导致每次换文件都要手动改配置,极易漏改或拼错。VSCode 支持动态变量,推荐用 ${file} 或 ${relativeFile}:
-
${file}:调试当前打开的单个 JS 文件,适合脚本类项目或快速验证逻辑 -
${relativeFile}:配合cwd使用,更适合多入口的子目录结构 - 如果项目有固定入口(如
src/index.js),才用绝对路径写法,但必须配合cwd指向项目根目录,否则require()会找不到模块
调试时提示 “Cannot connect to the target” 怎么办?
这通常是 Node.js 进程没起来,或 VSCode 没连上调试端口。检查三件事:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 确认你运行的是
node --inspect启动的进程,不是普通node;VSCode 自动加这个参数,但如果你用npm start,就得在package.json里写成"start": "node --inspect -r ts-node/register src/index.ts" - 看终端输出有没有类似
Debugger listening on ws://127.0.0.1:9229/...;没有就说明没启用调试模式 - Windows 上杀掉残留的
node.exe进程(任务管理器里找),macOS/Linux 执行pkill -f "node --inspect",避免端口被占
ESLint + Prettier 冲突导致保存后代码乱跳?
这是两个工具规则打架的典型表现,尤其在缩进、分号、引号风格上。关键不是禁用谁,而是让它们协同:
- 在
.eslintrc.js里加"extends": ["eslint:recommended", "prettier"],确保 Prettier 规则覆盖 ESLint 默认格式化行为 - VSCode 设置里关掉
"editor.formatOnSave",只留"editor.codeActionsOnSave": { "source.fixAll.eslint": true },让 ESLint 统一接管格式修复 - 别装
Prettier插件后又手动绑定Ctrl+Shift+I格式化快捷键——它会绕过 ESLint 直接格式化,破坏一致性
Node.js 版本切换频繁时,VSCode 为啥总报 ReferenceError: require is not defined?
这不是语法错误,是 VSCode 的 JS 语言服务误判了运行环境。它默认按浏览器上下文解析,而 require 是 Node.js 的 CommonJS 特性。解决方法很简单:
- 在项目根目录加一个空的
jsconfig.json文件,内容只写:{ "typeAcquisition": { "include": ["node"] } } - 或者更彻底:把
jsconfig.json升级为tsconfig.json(哪怕不用 TypeScript),加上"compilerOptions": { "module": "commonjs", "target": "ES2020", "lib": ["ES2020", "DOM"] } - 重启 VSCode 窗口,让语言服务重载配置 —— 这步不能跳,缓存不刷新,提示还会持续出现
最常被忽略的是 jsconfig.json 或 tsconfig.json 的存在本身:没有它,VSCode 就不知道该按 Node.js 还是浏览器环境做类型推导和全局变量识别,哪怕你 node -v 输出再正常,编辑器层面照样报错。

















