【问题标题】:How to remotely debug Node.js app with source maps (using WebStorm)如何使用源映射远程调试 Node.js 应用程序(使用 WebStorm)
【发布时间】:2016-07-27 14:04:23
【问题描述】:

我正在努力调试从 ES6 和 BabelJs 翻译而来的一段 node.js 代码。情况如下:

我有一个带有 ES6 源文件 server\app.js 的项目,它被翻译成 ES5 并与 dist\server\app.js.map 一起放入 dist\server\app.js。我可以在原始server\app.js 中设置一个断点,然后在本地调试文件dist\server\app.js 以命中该断点 - 源映射工作得非常好。

现在,我已将整个 dist 文件夹放到远程 PC 上,并在其中使用 node --debug-brk dist\server\app.js 命令启动我的应用程序。从 WebStorm 使用远程调试器连接到该进程使应用程序运行,但没有命中断点。

令人惊讶的是,如果我从安装了 WebStorm 的同一主机上的终端运行 node --debug-brk dist\server\app.js,那么连接到 localhost:5858 的远程调试器能够触发该断点。

为了在远程调试时命中该断点,我有什么遗漏吗?

提前感谢您的任何建议。

Webstorm: 2016.1
Node: 4.4.2 (both local and remote machine)

【问题讨论】:

    标签: node.js debugging ecmascript-6 webstorm remote-debugging


    【解决方案1】:

    当在与 WebStorm 的通信中遇到断点时,节点调试器似乎会发送行号和文件名。文件路径是运行服务器节点的路径。我们拥有的是:

    Server (remote):
    /remotePath/dist/server/app.js (transpiled file ES5)
    
    Local system:
    /localPath/server/app.js (source file ES6)
    /localPath/dist/server/app.js (transpiled file ES5)
    /localPath/dist/server/app.js.map (source map).
    

    什么节点发回的是这条路径:

    /remotePath/dist/server/app.js
    

    所以 WebStorm 尝试在其文件系统中查找此文件。但它不存在。 这里的解决方案可能是在本地文件系统中创建一个符号链接:

    /remotePath -> /localPath
    

    顺便说一句。 VS Code 通过在调试配置中暴露 localRoot 和 remoteRoot 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2013-02-22
      • 1970-01-01
      • 2013-11-03
      • 2019-06-18
      • 2023-03-23
      相关资源
      最近更新 更多