使用Visual Studio Code调试webpack捆绑节点ts

Ant*_*eth 5 typescript webpack visual-studio-code angular

(在某种程度上与 相关但更具体到VsCode)

我试图使用visual studio代码调试AngularU入门套件.但是它将ts输出合并到一个bundle.js中,并带有一个bundle.js.map:

?web
  ?dist
    ?client
    ?server
      ?bundle.js
      ?bundle.js.map
  ?src
    ?server.ts
    ?client.ts
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,我从VS UI收到错误:

request 'launch': cannot launch program '/home/.../web/src/server.ts'; setting the 'outDir' attribute might help
Run Code Online (Sandbox Code Playgroud)

OUTDIR工作在我的其他项目罚款(不使用的WebPack)时,输出文件不会被合并,但在这里它不帮助.很确定他正在寻找server.js(但只有一个bundle.js及其地图文件).

生成的单个文件输出是否有任何outFile选项?

我的launch.json:

{
        "name": "WebServer",
        "type": "node",
        "request": "launch",
        "program": "./web/src/server.ts",
        "stopOnEntry": false,
        "args": [],
        "cwd": "./web",
        "runtimeExecutable": null,
        "runtimeArgs": [
            "--nolazy"
        ],
        "env": {
            "NODE_ENV": "development"
        },
        "externalConsole": false,
        "sourceMaps": true,
        "outDir": "./web/dist/server"
}
Run Code Online (Sandbox Code Playgroud)

编辑:当我将webpack服务器输出重命名为server.jsserver.map.js(而不是bundle.*)时它会运行,但不幸的是断点不起作用:

断点显示未找到

这是server.js.map文件的内容.

根据本教程, TS编译器和Webpack都配置为创建源映射.

我错过了什么吗?

EDIT2:带有断点的问题似乎是地图文件中的源URI.

当我转过身来

"webpack:///./src/server.ts",
Run Code Online (Sandbox Code Playgroud)

进入这个

"../../src/server.ts",
Run Code Online (Sandbox Code Playgroud)

断点正在发挥作用.

Ant*_*eth 16

这是我如何使它工作:

  1. VsCode至少为1.1.0(较旧的将与sourceRoot一起使用)

  2. 将bundle文件设置为与webpack.config.js中的父目录相同的名称

    output: {
    path: path.join(__dirname, 'dist', 'server'),    
    filename: 'server.js'                         
    }, 
    
    Run Code Online (Sandbox Code Playgroud)
  3. 并在launch.json中将父目录设置为'outdir':

    ...
    "sourceMaps": true,
    "outDir": "${workspaceRoot}/dist/server",
    "smartStep":true
    
    Run Code Online (Sandbox Code Playgroud)
  4. 让webpack在webpack.config.json中输出sourcemap的绝对路径

    output : {
    ...
    devtoolModuleFilenameTemplate        : '[absolute-resource-path]',
    devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]'
    }
    
    Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案对我有用,outDir现已弃用并被outFiles取代,但它很容易修补. (3认同)