VSCode 调试 TypeScript 文件时不识别 d.ts 定义文件问题解决
VSCode 在调试 TypeScript 文件时,使用的 ts-node,会出现不识别全局定义文件的问题。
使用 ts-node 可以在 VSCode 中直接调试 TypeScript 文件,只需要在 launch.json 中配置:
1 | { |
然后只需要打开要调试的文件,摁F5
就可以直接执行了。
但是如果在文件中使用了全局定义文件中定义的内容,interface 等,会在执行阶段报找不到定义的错误。
原因是 ts-node 在 7.0 版本以后默认不再加载 tsconfig.json 中的文件了: https://github.com/TypeStrong/ts-node/releases/tag/v7.0.0
我们需要手动设置 –files 选项来让 ts-node 加载 tsconfig.json 中的文件。
1 | ts-node --files ./file/to/run.ts |
然而在 launch.json 中,没找到怎么设置这个选项。解决办法是我们创建一个 ts-node.js
文件,在其中引入 ts-node,给他设置 files 为 true:
1 | require('ts-node').register({ files: true }); |
然后修改 launch.json 中的 runtimeArgs:
1 | { |
问题就解决了。