与Webpack

时间:2017-11-09 10:54:21

标签: javascript node.js debugging webpack visual-studio-code

我是Node JS的新手,也是一般的JS开发人员。我有一个由WebPack捆绑的app-bundle.js文件,通过app.js文件调用。

我正在尝试使用Visual Studio Code进行调试。我为VS代码配置创建了launch.json文件。但是,当我在各个js文件中插入断点时,我得到了

Breakpoints set, but not yet bound

但是,当我在app.js或app.bundle.js中设置断点时,它可以正常工作。

我的launch.json如下:

{
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}/app.js"
}

如何让VS代码调试器与各个js文件一起使用?

2 个答案:

答案 0 :(得分:3)

我能够解决这个问题。

弃用debug时,请使用inspect。因此,将以下内容添加到package.json中的脚本对象中,以使用webpack构建并以调试模式启动节点,并将9229作为本地端口:

"start": "webpack && node --inspect--brk=9229 app.js"

当webpack将js文件捆绑为一个时,我们需要一个源映射,以便VS代码可以在各个文件上使用断点。因此,在webpack.config.js中,添加SourceMapDevToolPlugin

plugins:[
    new webpack.SourceMapDevToolPlugin({
        filename: '[name].js.map'
    })
]

最后在 VS Code 中,配置launch.json文件,如下所示:

{
    "type": "node",
    "request": "launch",
    "name": "Launch Program"

    "stopOnEntry": false,
    "args": [],
    "cwd": "${workspaceFolder},
    "preLaunchTask": null,
    "runtimeExecutable": "npm",
    "runtimeArgs": [
        "run-script", "start"
    ],
    "env": {
        "NODE_ENV": "development"
    },
    "console": "integratedTerminal",
    "port": 9229
}

答案 1 :(得分:0)

简短回答:

  1. 更改 vs-code 调试配置文件。
  2. 添加npm-script命令调试,与上面的运行脚本值相同。
  3. 开始调试 F5
  4. 配置内容:

    {
        "name": "Launch via NPM",
        "type": "node",
        "request": "launch",
        "cwd": "${workspaceFolder}",
        "runtimeExecutable": "npm",
        "runtimeArgs": [
            "run-script", "debug"
        ],
        "port": 9229
    }
    

    参考:

    enter image description here enter image description here enter image description here Official Doc