vscode本身不运行typescript,仅编辑、检查、调试;真正执行依赖本地tsc或ts-node配合node.js。tsc默认只类型检查不生成.js文件,需确保tsconfig.json中"noemit":false、"outdir"与"rootdir"成对合理设置,且launch.json配置runtimeargs等关键字段才能实现f5调试。

VSCode 本身不运行 TypeScript,它只编辑、检查、调试;真正执行靠的是你本地装的 tsc 或 ts-node,配合 Node.js 才能跑起来。没配对这两者中的任意一环,F5 调试失败、终端报 Cannot find module 'ts-node'、断点打不进 .ts 文件,都是必然结果。
为什么 tsc 编译后没生成 .js 文件?
因为 tsc 默认只做类型检查,不落地 JS——这是最常被忽略的前提。
-
"noEmit": true(或未显式设为false)会强制禁用输出,检查你的tsconfig.json的compilerOptions里有没有这一项 -
"outDir"和"rootDir"必须成对出现且路径合理:比如"outDir": "./dist"和"rootDir": "./src";若两者都设为"./",tsc可能拒绝编译或循环写入 -
"include"路径写错就等于“告诉编译器别编这些文件”:必须用正斜杠、带通配符,例如["src/**/*"],写成["src\**\*"](Windows 风格反斜杠)或["src/**"](缺/*)都会失效 - 临时验证配置是否生效:终端执行
npx tsc --noEmit false,看是否立刻生成.js文件
怎么让 F5 直接调试 .ts 文件?
靠的是 launch.json + ts-node,不是 VSCode 原生能力;漏掉 runtimeArgs 就等于没配。
完整的Galileo AI平台 TypeScript/JS SDK 参考,用于评估、观察和保护 GenAI 应用。适用于构建 Node.js 或 TypeScript 项目。
- 先装依赖:
npm install --save-dev ts-node @types/node -
launch.json中关键字段不能少:{ "name": "调试 TypeScript", "type": "pwa-node", "request": "launch", "program": "${workspaceFolder}/src/index.ts", "runtimeArgs": ["-r", "ts-node/register"], "skipFiles": ["<node_internals>/**"] }</node_internals> - 别混用
preLaunchTask: "tsc: build":那是给纯tsc编译流程用的,和ts-node冲突,会导致重复编译甚至路径错乱 - 确保右下角 TypeScript 版本号点开后选了
Use Workspace Version,否则编辑器提示和ts-node实际行为可能不一致
保存就自动编译,需要 tasks.json 还是 nodemon?
二者目的不同:tasks.json 让 VSCode 知道“保存时该跑什么命令”,nodemon 解决“JS 改了之后要不要重启进程”。开发阶段通常要一起用。
- 要
tsc --watch自动编译:tasks.json里必须设"isBackground": true和"problemMatcher": ["$tsc-watch"],否则任务一闪而过,错误也不标红 - 要改完
.ts就自动重启服务:在package.json里加脚本:"dev": "nodemon --exec ts-node --files src/index.ts",其中--files是关键——默认nodemon只监听.js,不加它就不会响应.ts变化 - 如果用了路径别名(如
@/utils),tsconfig.json里得配"baseUrl"和"paths",且ts-node必须能读到这个配置(即项目根目录有tsconfig.json,且没用-T参数跳过类型检查)
真正卡住人的从来不是某一行代码写错,而是 tsconfig.json 里一个字段缺失、launch.json 少了个 runtimeArgs、或者 nodemon 没加 --files——这些地方不报语法错误,但整个链路就静默失效。动手前先确认三件事:npx tsc --version 有输出、tsconfig.json 存在且含 outDir、node_modules/ts-node 确实存在。










