不是缓存残留导致,而是ts-node内存转译不生成磁盘文件,断点不命中主因是ts版本不一致或launch.json配置错误:必须设runtimeargs为["--nolazy", "-r", "ts-node/register"],右下角选use workspace version,并重启ts server。

ts-node 调试时断点不命中,是不是缓存没清干净?
不是缓存文件残留导致的,而是 ts-node 本身不写磁盘缓存——它在内存中实时转译 .ts 文件,不生成 .js 或 .js.map。所谓“断点不命中”,90% 是因为 VSCode 调试器加载了旧的源码映射,或语言服务与运行时用的 TypeScript 版本不一致。
常见错误现象:
- 编辑器里能跳转定义,但调试时断点变为空心圆(unbound)
- 改完
src/index.ts再按 F5,执行的却是上一版逻辑 - 右下角显示 TypeScript 5.4,但
node_modules/typescript实际是 4.9
解决方法很简单:
- 右下角点击 TypeScript 版本号 → 选 Use Workspace Version
- 改完
tsconfig.json后,按Ctrl+Shift+P→ 输入TypeScript: Restart TS server - 确保
launch.json中没写错runtimeArgs:必须是["--nolazy", "-r", "ts-node/register"],不能漏-r,也不能写成"ts-node"作为runtimeExecutable
为什么删了 node_modules/.cache 还没用?
node_modules/.cache 是 esbuild、vite 或 jest 等工具用的,ts-node 完全不读它。它只依赖 tsconfig.json 和当前 node_modules 下的 typescript + ts-node 包。
真正影响实时性的只有两点:
-
tsconfig.json中的"moduleResolution"必须设为"node"(或"node16"/"nodenext"),否则路径别名(如@/utils)解析失败,ts-node会静默 fallback 到默认行为,导致 import 错误但无报错 - 如果项目启用了 ESM(
"type": "module"),runtimeArgs必须换成["--loader=ts-node/esm"],-r在 ESM 下直接被 Node.js 忽略
验证是否生效:在 launch.json 的 args 里加个非法路径,比如 ["${workspaceFolder}/src/nonexistent.ts"],如果报 Cannot find module,说明解析链通了;如果静默失败或报语法错误,说明配置没起作用。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
如何确认 ts-node 正在用你改的代码,而不是“某处缓存”?
没有“某处缓存”。ts-node 每次启动都重新读取并转译源文件。所谓“不一致”,其实是以下三者版本或路径没对齐:
-
node_modules/ts-node版本(决定 CLI 行为) -
node_modules/typescript版本(决定类型检查和 AST 解析) -
tsconfig.json路径(ts-node默认从process.cwd()开始找,不是从launch.json的cwd)
实操建议:
- 在终端里手动跑一次:
npx ts-node --showConfig src/index.ts,看输出的config是否是你预期的tsconfig.json,以及files列表是否包含你改的文件 - 在
launch.json中显式指定env:"TS_NODE_PROJECT": "${workspaceFolder}/tsconfig.json",避免跨工作区误读 - 禁用所有非必要插件(尤其 TypeScript Auto Compiler、TypeScript Toolbox),它们可能劫持
tsserver进程,干扰调试器源码映射
Remote-WSL 或容器环境里 ts-node 执行异常怎么办?
Remote 场景下,ts-node 运行在远端(WSL/Linux/Docker),但 VSCode 的语言服务和调试器前端仍在本地。这时容易出现“编辑器提示正常,运行就报错”的割裂感。
关键检查点:
- 在 WSL 终端里执行
which ts-node和ts-node -v,确认远端装的是 workspace 版本,不是全局/usr/bin/ts-node - 检查
launch.json的cwd是否指向 WSL 路径(如/home/user/project),而非 Windows 路径(C:\Users\...) - 如果用了 pnpm,确认
node_modules/.pnpm下的ts-node符号链接没损坏;可临时改用npx ts-node绕过 link 问题 - Remote-WSL 场景下,删本地
%APPDATA%CodeCache没用,要删 WSL 里的~/.vscode-server/data/Machine/Cache
最省事的验证方式:关掉 VSCode,进 WSL 终端,cd 到项目根目录,直接跑 npx ts-node src/index.ts。如果这步都报错,问题一定出在环境或配置,跟 VSCode 缓存无关。










