无法在VSCode中调试Typescript

12

这是我的launch.json文件

    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "name": "Launch Server",
            "request": "launch",
            "program": "${workspaceRoot}/server/src/app.ts",
            "cwd": "${workspaceRoot}",
            "env": {
                "NODE_ENV": "dev"
            },
            "skipFiles": [
                "node_modules/**/*.js"
            ],
            "outFiles": [
                "${workspaceRoot}/dist/server/src/*.js"
            ],
            "sourceMaps": true,
            "stopOnEntry": true,
            "console": "internalConsole"
        },

我的源文件夹:

在此输入图片描述

我的目标文件夹:

在此输入图片描述

我收到的错误信息是:

Cannot launch program '/Dev/myapp/server/src/app.ts'; setting the 'outFiles' attribute might help.
如果我将 "program" 属性更改为 ""program": "${workspaceRoot}/dist/server/src/app.js",它可以使用,但是我调试的是编译后的 JavaScript 而不是 TypeScript。显然,使用 .map 文件进行转换是有效的,那么问题出在哪里?
tsconfig.json
{
  "compilerOptions": {
    "allowJs": false,
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [
      "es6",
      "dom"
    ],
    "mapRoot": "./",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "./dist",
    "sourceMap": true,
    "target": "es6",
    "typeRoots": [
      "node_modules/@types"
    ]
  },
  "exclude": [
    "web",
    "dist",
    "node_modules"
  ]
}
2个回答

7
您的配置中缺少src文件夹:
"outFiles": [
    "${workspaceRoot}/dist/server/src/*.js"
],

还需在tsconfig.json中设置mapRoot./dist/。目前它将在./server/src文件夹中搜索sourcemaps,而不是在./dist中搜索。


抱歉,一开始可能不知道为什么会缺少了那个..即使在输出文件中有 /src 文件夹,我仍然会遇到相同的错误。 - Ryan Langton
你能发一下你的 tsconfig.json 文件吗? - Saravana
为什么tsconfig.json中的mapRoot设置为./?你的源映射在disc/server/src/中,对吗? - Saravana
这要看情况,有4个应用程序共享相同的tsconfig..所有输出到dist/{appName}/src。 - Ryan Langton
那么也许应该将其设置为 ./dist/?目前它会在您的 ./server/src 文件夹中搜索源映射,而不是 dist - Saravana
1
就是这样!TypeScript的调试现在可以用了!如果你想编辑这个答案,我会把它选择为解决方案,谢谢! - Ryan Langton

1
在我的情况下,我在 launch.json 中有以下内容。
"program": "${file}"

当使用F5 / Ctrl+F5 运行ts文件时,显然是在使用node。将其更改为...
"program": "${workspaceFolder}/${fileBasenameNoExtension}.js"

我可以运行活动的ts和js文件...

同时启动tsc -watch构建任务,以便实时编译js文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接