likes
comments
collection
share

用vscode的launch.json调试ts写的nodejs程序

作者站长头像
站长
· 阅读数 2

因为我的nodejs项目是用ts写的,根据tsconfig.json中关于compilerOptions.sourceMap选项的描述,需要在

tsconfig.json中开启该sourceMap选项,以便于可以让debugger工具在调试过程中可以展示原始的ts代码:

用vscode的launch.json调试ts写的nodejs程序

于是我照办了:

用vscode的launch.json调试ts写的nodejs程序

我的launch.json是选择vscode内置的Nodejs debugger 时自动生成的:

用vscode的launch.json调试ts写的nodejs程序

当按F5开启调试时,DEBUG CONSOLE就打印如下:

用vscode的launch.json调试ts写的nodejs程序

Server connection error 中显式我代码中的src/controller/captcha.ts 对应的dist/controller/captcha.js.map 文件中有未识别的符号':'

有这个报错也就导致debugger启动服务失败。

既然是map文件报错,那就让tsc不要生成map文件。重新把tsconfig.json中的 sourceMap选项置false,重新用

dist目录,否则那些.map文件还存在。

这时再按F5开启调试,服务就启动正常了:

用vscode的launch.json调试ts写的nodejs程序

但是当开始调试时,就会发现DEBUG CONSOLE又报出如下错误提示:

用vscode的launch.json调试ts写的nodejs程序

读不到source map文件。当然了,因为我在tsc时候没有让生成sourceMap。

没有sourceMap文件导致的问题就是——无法在原始的ts代码上打断点,原始ts代码上打的都是这种无效的断点。

用vscode的launch.json调试ts写的nodejs程序

要打断点必须在dist下面的js文件中去打。

用vscode的launch.json调试ts写的nodejs程序

以在dist下看到更新后的js文件,然后接着打断点调试即可。