Node.js调试需启用Node.js和JavaScript Debugger插件,正确配置Node解释器绝对路径、工作目录(项目根目录)及入口JS/TS文件;TypeScript项目须开启sourceMap并勾选“Enable source maps”;attach模式调试需用--inspect-brk=0.0.0.0:9229启动并确保源码路径与require路径一致。

直接能调试,前提是 Node.js 和 JavaScript Debugger 两个插件已启用,且运行配置指向真实 node 可执行路径——不是“Project default”却没配解释器那种空壳。
Node.js 运行配置必须填对这三项
很多“点 Debug 没反应”问题,根源就在这三处漏填或填错:
-
Node interpreter:必须是绝对路径,比如/usr/local/bin/node或C:\Program Files\nodejs\node.exe;选“Project default”但没在 Languages & Frameworks → Node.js and NPM 里指定解释器,等于没设 -
Working directory:填项目根目录(含package.json的那层),不能是子目录或空 -
JavaScript file:填实际入口文件,如index.js、bin/www或src/server.ts;别填构建产物(dist/index.js),否则断点不命中
TypeScript 项目断点不生效?检查 sourceMap 和 WebStorm 映射
TS 编译后断点失效,90% 是因为 source map 链路断了:
- 确保
tsconfig.json中有"sourceMap": true,且outDir与编译输出路径一致 - 在 WebStorm 的 Node.js 运行配置中,勾选 Enable source maps(该选项在 Configuration 标签页底部)
- 如果用
tsc --watch或ts-node,别用node dist/index.js启动——得让 WebStorm 直接加载源码,而不是去匹配编译后路径
调试已运行的 Node 进程(attach 模式)
适合 Docker、PM2 或后台常驻服务,重启成本高时必须用:
立即学习“Java免费学习笔记(深入)”;
- 启动进程时加参数:
node --inspect-brk=0.0.0.0:9229 ./index.js(注意 host 必须是0.0.0.0,不是127.0.0.1,尤其容器内) - WebStorm 新建配置 → 选 Attach to Node.js/Chrome → Host 填
localhost,Port 填9229 - attach 成功后,断点仍要设在原始 TS/JS 源文件上;WebStorm 会根据
require.resolve()返回的路径自动匹配模块,所以源码位置必须和运行时require的路径一致
console.log 看不到输出?不是调试器问题,是流被吞了
断点能停住、变量能看,但控制台没日志——大概率是输出缓冲或重定向导致:
- Node.js 默认对非 TTY 环境(如某些 IDE 启动方式)启用 stdout 缓冲,加
process.stdout.write('\n')或process.stdout.flush()(v18.17+)可强制刷出 - 若用了
morgan、pino等日志库写文件,日志不会出现在 WebStorm 控制台;需在运行配置的 Logs 标签页手动添加日志文件路径才能看到 - 检查是否误启用了
--no-warnings或process.stderr.write = () => {}类似劫持
最易忽略的一点:WebStorm 调试器只响应 V8 实际执行的 JS 模块。用 eval()、new Function()、动态 import() 加载的代码,断点天然无效——这不是配置问题,是 V8 调试协议限制。


















