WebStorm NPM调试配置中的"连接被拒绝"

Ben*_*Ben 17 javascript-debugger node.js webstorm

请记住,我对调试器的实际操作只有最简单的理解,我需要帮助为express.js应用程序设置WebStorm npm调试配置.

这是我到目前为止 - 我用我的设置单击调试,因为我认为它们应该是(下面):

/Users/me/.nvm/versions/node/v4.4.1/bin/node --debug=8090     
/Users/me/.nvm/versions/node/v4.4.1/lib/node_modules/npm/bin/npm-cli.js run-script start

To debug "start" script, make sure $NODE_DEBUG_OPTION string is specified as the first argument for node command you'd like to debug.
For example:
 { "start": "node $NODE_DEBUG_OPTION server.js" }
Debugger listening on port 8090
...
It has begun. Port: 3000
Run Code Online (Sandbox Code Playgroud)

所以在这一点上,应用程序已启动并响应我POSTlocalhost:3000,但不会破坏我设置的断点.

查看调试器>变量窗格,Connecting to localhost:57617然后弹出一个工具提示,说"连接被拒绝",窗格显示Frame is not available.

我不明白端口号57617来自哪里.它变化,虽然不是根据任何图案,我尚未发现,除了因为它总是比我在设置一个不同的--debug=X--debug-brk=X节点的选择.

sme*_*vin 15

错误信息确实非常不清楚.你需要调整你的npm脚本条目package.json(遗憾地).在这篇博客文章中找到了清晰的描述:http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/

您的start条目应如下所示:

"scripts": {
    "start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用两个条目来保持第一个DRY.虽然它不是真的必要,因为两者都从命令行运行得很好.所以只是为了完整性:

"scripts": {
    "start": "someModule --arguments",
    "startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
Run Code Online (Sandbox Code Playgroud)

我没有发现这个方法特别干净,这就是npm调试器应该为你做的,而不必操纵源代码.但它似乎是唯一的方式(目前).

  • 在Webstorm的"运行/调试配置"窗口中,您可以将"$ NODE_DEBUG_OPTiON"传递给Arguments字段中的脚本.(它应该是一个npm配置) (4认同)