Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js VisualStudio代码中的Typescript调试_Node.js_Visual Studio_Typescript_Visual Studio Code - Fatal编程技术网

Node.js VisualStudio代码中的Typescript调试

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

我尝试了这个解决方案:

但是如果我在我的.ts文件中设置了一个断点,就会显示调试器找不到该文件。.js文件中的断点起作用。源映射已存在

启动配置:

    {
        "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"
    }  
    
在你的launch.json中
“预启动任务”:“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
中。您可以在tsconfig
sourceRoot:“src”
中设置sourceRoot编译器选项