如何使用源映射远程调试 Node.js 应用程序(使用 WebStorm)

How to remotely debug Node.js app with source maps (using WebStorm)

我正在努力远程调试使用 BabelJs 从 ES6 翻译而来的 node.js 代码。情况是这样的:

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

现在我已将我的整个 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)

当在与 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 试图在它的文件系统中找到这个文件。但它不存在。 这里的解决方案可能是在本地文件系统中创建一个符号 link:

/remotePath -> /localPath

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