Node.js VisualStudio代码中的Typescript调试
我尝试了这个解决方案: 但是如果我在我的.ts文件中设置了一个断点,就会显示调试器找不到该文件。.js文件中的断点起作用。源映射已存在 启动配置:Node.js VisualStudio代码中的Typescript调试,node.js,visual-studio,typescript,visual-studio-code,Node.js,Visual Studio,Typescript,Visual Studio Code,我尝试了这个解决方案: 但是如果我在我的.ts文件中设置了一个断点,就会显示调试器找不到该文件。.js文件中的断点起作用。源映射已存在 启动配置: { "name": "DEBUG", "type": "node", "request": "launch", "program": "${workspaceRoot}/src/app.ts", "stopOnEntry": false, "arg
{
"name": "DEBUG",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/src/app.ts",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"preLaunchTask": null,
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"externalConsole": false,
"sourceMaps": true,
"outDir": "${workspaceRoot}/cmpl"
}
您的tsconfig.json有问题。您必须检查配置是否包含正确的
sourceRoot
编译器选项,该选项设置为.ts源的正确路径
sourceMap
也必须设置为true。您可以仔细检查路径正确性,检查任何.js.map文件,其中源文件
和源根文件
字段必须指向.ts源文件的正确路径。要使其正常工作,有几点建议:
- 确保tsconfig.json指向正确的src/和输出目录,如
{ "compilerOptions": { "module": "commonjs", "target": "es6", "sourceMap": true, "rootDir": "src", "outDir": "cmpl" } }
- 您应该有一个构建任务(.vscode/tasks.json),以确保输出是最新的
{ "version": "0.1.0", "command": "tsc", "isShellCommand": true, "args": ["-p", "."], "showOutput": "silent", "problemMatcher": "$tsc" }
“预启动任务”:“tsc”
发送到tsconfig。它做到了,如果没有,它将能够启动服务器。服务器正在运行,但我无法在.ts文件中设置断点。而且构建任务也可以工作。@hmm,这很奇怪。在这一点上,如果不仔细检查项目,很难说:)我有一个cmpl和src文件夹。这是app.ts/js文件和文件夹,如routes、controllers、models等。在我的根目录中,cmpl和src文件夹所在的位置是tsconfig、package.json、gulpfile.js和其他项目文件。那么我认为您将断点放在了不同的文件中,而不是app.ts?我建议您尝试在app.ts中放置断点,并跟踪它们,以找出您不能再点击断点的位置。您是否检查了.ts
文件在任何.js.map
中的路径?它是相对的还是绝对的?它指向正确的位置吗?例如,我的IndexController中的源映射是“sources”:[“controllers/IndexController.ts”]
是“controllers”文件夹中的IndexController.ts文件,相对于您的IndexController.js.map?看起来您的配置指向.js和sources的不同文件夹。IndexController.js/.js.map位于/cmpl/controllers
中,IndexController.ts位于/src/controllers
中。您可以在tsconfigsourceRoot:“src”
中设置sourceRoot编译器选项