请记住,我对实际所做的调试器只有最简单的理解,我需要帮助为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
所以此时,应用程序已启动并响应我的POST
到localhost:3000
,但不会在我设置的断点处中断。
查看调试器>变量窗格,我看到Connecting to localhost:57617
,然后弹出一个工具提示说"连接被拒绝"并且窗格显示Frame is not available
。
我不明白端口号57617的来源。虽然不是根据我发现的任何模式,但它有所不同,因为它总是不同于我在--debug=X
或--debug-brk=X
节点选项中设置的模式。
答案 0 :(得分:15)
错误信息的确非常不清楚。您需要在package.json
中调整您的npm脚本条目(遗憾的是)。在此博客文章中找到了清晰的说明:http://pavelpolyakov.com/2016/05/01/webstorm-npm-tasks-debug/
您的start
条目应如下所示:
"scripts": {
"start": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
您还可以使用两个条目来保持第一个DRY。虽然它不是真的必要,因为两者都从命令行运行得很好。所以只是为了完整性:
"scripts": {
"start": "someModule --arguments",
"startDebug": "node $NODE_DEBUG_OPTION ./node_modules/someModule/bin/someModule.js --arguments"
}
我发现这个方法特别干净,这就是npm调试器应该为你做的,而不必操纵源代码。但它似乎是唯一的方式(目前)。
答案 1 :(得分:4)
我以前在Node或Webstorm的早期版本中从未需要这个。现在不确定哪个更改需要此选项。
我必须在package.json
中添加它,但是将其添加到运行配置不起作用。我不得不制作一个单独的脚本,因为它在运行任何脚本而没有调试时崩溃了。
这是我的package.json(注意Windows样式变量%VAR%,对于类Unix系统使用$ VAR ):
"scripts": {
"start": "node index.js",
"debug": "node %NODE_DEBUG_OPTION% index.js",
},
然后,当我想要调试时,我使用一个调用调试选项的运行配置 - 因为至少在Windows中,节点在没有被替换的情况下按字面意思取得。
如果您尝试在Webstorm的(2016.3.3)运行配置对话框中输入变量:
导致这些实际命令不正确:
作为脚本参数:
"C:\...\runnerw.exe" "C:\...\node.exe" "C:\...\npm-cli.js" run start %NODE_DEBUG_OPTION%
作为节点选项:
"C:\...\runnerw.exe" "C:\...\node.exe" %NODE_DEBUG_OPTION% "C:\...\npm-cli.js" run start
但是这些选项似乎需要传递给NPM,而不是npm脚本(前者),而不是节点(后者),据我所知,在对话框中没有办法做到这一点。因此,添加到package.json脚本命令。