如何使用源映射远程调试 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 解决了这个问题。
我正在努力远程调试使用 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 解决了这个问题。