node.js - vs code:调试在nodejs中运行的打字稿,同时指定源根
问题描述
我想用 VSCode 调试我的打字稿代码(在 NodeJS 中运行)。以下代码是我的起点,并且工作得很好。
打字稿代码:
//src/index.ts
console.log('line 1');
console.log('line 2');
编译器设置:
//tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}
和启动配置
//.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}/src/index.js"
}
]
}
在上面的设置中,我可以在打字稿代码中添加断点,然后开始调试。
所有打字稿源代码都在一个名为src/
. 我想通过添加以下配置选项在编译器设置中指定它:
"compilerOptions": {
//...
"sourceRoot": "src"
它仍然可以正常编译,并且在执行时会打印“第 1 行”、“第 2 行”。
但是,断点不再起作用。我查看了生成的源映射,它们指定了路径“sourceRoot”:“src”。我想这会破坏源映射查找。由于原始源与生成的输出位于同一文件夹中。如何在编译器中正确配置它?
解决方案
我发现在 vscode 中调试 ts 的最简单方法是使用ts-node
然后我在我的启动脚本中使用 ts-node
{
"version": "0.2.0",
"configurations": [
{
"name": "ts node inspector",
"type": "node",
"request": "launch",
"args": ["${workspaceRoot}/src/server.ts"],
"runtimeArgs": ["-r", "ts-node/register"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart",
"env": {
"TS_NODE_IGNORE": "false"
}
}
]
}
推荐阅读
- reactjs - 如何解决错误:无效的钩子调用.ons:?
- android - 如何编写带有有效负载的 NFC 来打开应用程序?
- javascript - 如何解决使用 Flutter-TTS 包的错误?
- database - 如何使用 Gremlin 检查图形中是否存在节点/顶点/边
- velo - Wix updateContact() 并自动在表单中填写包含会员电子邮件的电子邮件
- css - 带有 CSS 变量的 PostCSS 嵌套在 Tailwind CSS 和 Next.js 中不起作用
- javascript - v-for循环Vuejs中的目标元素
- clang-format - 如何在 clang 格式的输出中添加行号?
- git - 在不更改主分支的情况下合并 Git 分支
- javascript - javascript - 服务器端/客户端