TS 调试速查
一条规则
进程会一直活着 →
--inspect;跑完就退 →--inspect-brk
| 参数 | 连上之前程序走没走 | 连上之后 | 用于 |
|---|---|---|---|
--inspect | 已在跑 | 继续跑 | 长驻进程(koa / --watch / dev server) |
--inspect-wait | 没跑 | 立刻跑 | 要确保连上再启动,但不需要停 |
--inspect-brk | 没跑 | 停住等你按继续 | 跑完就退的脚本 |
--inspect 只是把调试端口开出来,它不暂停。脚本 50ms 就跑完退出,等你去 chrome://inspect 连的时候进程早没了 —— 所以短脚本必须用 -brk。
两个必踩的坑
1. 参数必须在脚本路径前面
Node 遇到第一个非选项参数就停止解析 Node 参数,后面的全当脚本自己的 argv:
bash
node src/ts/bigNumber.ts --inspect # ❌ --inspect 成了脚本参数,inspector 根本没启动
node --inspect src/ts/bigNumber.ts # ✅2. -brk 是 --inspect-brk 的一部分,不能拆开
bash
node --inspect -brk x.ts # ❌ node: bad option: -brk本项目怎么跑
bash
# 顶层直接执行的脚本
node --inspect-brk src/ts/bigNumber.ts
# 用了 enum / namespace / 构造函数参数属性等不可擦除语法的,加 tsx
node --inspect-brk --import tsx src/ts/xxx.tsNode 24 原生擦除类型,纯可擦除语法的文件不用 tsx。
连调试器:Chrome 打开 chrome://inspect → Open dedicated DevTools for Node。 想在 Sources 里看到 .ts 源码、断点下在 .ts 上,需勾上 DevTools 的 Settings → Preferences → Sources → Enable JavaScript source maps。
VS Code(省事得多)
命令行调短脚本要抢时间,launch.json 则是 VS Code 自己启进程 → 先设断点 → 再放它跑:
jsonc
{
"version": "0.2.0",
"configurations": [
{
"name": "调试当前 TS 文件",
"type": "node",
"request": "launch",
"program": "${file}",
"runtimeArgs": ["--import", "tsx"],
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"]
}
]
}打开 .ts → 行号左边点红点 → F5。
三种好用的断点:
- 条件断点 —— 右键红点 → 条件写
i === 3,循环里不用手点几百次 - 日志断点 —— 右键 → 写
i={i},不暂停只打日志,等于免改代码的console.log - 异常断点 —— Debug 面板勾上 Caught Exceptions,一抛异常就停在案发现场,查 bug 性价比最高