APE
文章标签归档关于

© 2026 APE.PUB

2026-10-25· 4 分钟

ts-debug

typescriptdebug

TS 项目debug

1.typecript erasableSyntaxOnly

erasableSyntaxOnly 是 TypeScript 的编译选项,用来限制代码只能使用“删除类型后就能直接运行”的语法。

例如:

{
  "compilerOptions": {
    "erasableSyntaxOnly": true
  }
}

允许:

interface User {
	name: string;
}

type Status = "ok" | "error";

function greet(name: string): string {
	return `Hello ${name}`;
}

这些语法运行时不需要额外生成代码,删除类型标注即可。

不允许:

enum Color {
	Red,
	Blue,
}
class User {
	constructor(public name: string) {}
}
namespace Utils {}

这些语法虽然写在 .ts 中,但运行时需要 TypeScript 生成额外 JavaScript 代码,因此不是“可擦除”的。

这个选项主要用于配合 Node.js 的原生 TypeScript 类型擦除功能:

node file.ts

这样便能够直接运行/debug ts代码了

2 WebStorm外部attach debug

node --inspect-brk=9229 packages/coding-agent/src/cli.ts

作用是:启动 Node 程序,同时开启调试端口,并在执行第一行用户代码前暂停。

各部分含义:

  • node:启动 Node.js
  • --inspect-brk=9229:
  • 开启 Node Inspector 调试协议
  • 监听 9229 端口
  • brk 表示启动后立即暂停
  • packages/coding-agent/src/cli.ts:运行项目 CLI 入口

执行后终端通常会显示:

Debugger listening on ws://127.0.0.1:9229/...

此时程序还没有真正进入 TUI。接着在 WebStorm 中选择:

Run → Attach to Node.js/Chrome

连接 localhost:9229,然后点击 Resume,程序才会继续启动。之后就可以在源码中打断点调试,同时继续在终端里操作 TUI。

对于这个项目,更建议使用项目已有的启动脚本:

NODE_OPTIONS="--inspect-brk=9229" ./pi-test.sh

因为 pi-test.sh 会额外加载:

packages/coding-agent/src/experimental/source-resolver.ts

直接运行 cli.ts 可能无法正确解析项目源码依赖。

如果不想启动后立即暂停,可以使用:

NODE_OPTIONS="--inspect=9229" ./pi-test.sh

区别是:

  • --inspect-brk:启动后立即暂停,适合从入口开始调试;
  • --inspect:正常启动,遇到断点时暂停,适合调试某个具体交互流程。

这样便可以调试TUI交互了

← 返回首页