将Webstorm调试器与node.js一起使用

时间:2014-01-18 23:18:30

标签: javascript node.js debugging webstorm

几周前我试过让webstorm调试器工作,但事实并非如此。 我今天再试一次,但结果相同。

我正在遵循这些指示 http://www.jetbrains.com/webstorm/webhelp/running-and-debugging-node-js.html#d93421e461

有我的配置,我实际上有三个服务器(使用pomelo.js),一个用于Web,一个用作web服务,托管在游戏服务器上,游戏服务器基本上无法直接从http请求访问。 (使用端口1500上的Web服务来访问它)

https://docs.google.com/file/d/0ByzbHcAxmCyvQ1ZqZTFhREpZNGM https://docs.google.com/file/d/0ByzbHcAxmCyvV2JFWkwxTldJNFE https://docs.google.com/file/d/0ByzbHcAxmCyvZnVlYXNNSk4weHM https://docs.google.com/file/d/0ByzbHcAxmCyvN2o1VUhQR3cwX0U

点击“运行:

"D:\Logiciels installés\nodejs\node.exe" --debug-brk=1337 web-server\app.js
debugger listening on port 1337

但如果我进入网页,我什么都没有,只是这个错误:

Code d'erreur : ERR_CONNECTION_ABORTED.

现在,如果我在调试模式下运行它,则会打开两个调试控制台: 调试网:

"D:\Logiciels installés\nodejs\node.exe" --debug-brk=29855 --debug-brk=1337 web-server\app.js
debugger listening on port 1337
[ReferenceError: Buffer is not defined]
Grunt watcher starting...


*********** Controller Reader ***********


GET/POST/PUT/DELETE => /
GET/POST/PUT/DELETE => /chat
GET/POST/PUT/DELETE => /demo
GET/POST/PUT/DELETE => /login
GET/POST/PUT/DELETE => /game
GET/POST/PUT/DELETE => /subscribe
POST => /game/connect
GET => /mapEditor
POST => /mapEditor/:action
GET => /translate


********* Controller Reader End *********


Web server has started in development mode.
Please log on http://127.0.0.1:1337/index.html
grunt-cli: The grunt command line interface. (v0.1.11)

但如果我选择“Debugger”选项卡,我会收到“无法连接”。

第二个调试控制台“Debug Web slave#1”: 我在控制台上什么都没有,但我在调试器选项卡上“连接到127.0.0.1:1337”。

有时当我尝试访问网页时,我在网页上看到了类似的内容:

Type: connect
V8-Version: 3.14.5.9
Protocol-Version: 1
Embedding-Host: node v0.10.24
Content-Length: 0

当我运行调试模式时,Debug Web调试器选项卡尝试连接到大约30000的随机端口127.0.0.30xxx,但是失败然后显示“无法连接”。

有人知道发生了什么吗?因为我不...谢谢。

修改

Error: Failed to lookup view "..\views\game\layout.ejs"
    at Function.app.render (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\application.js:493:17)
    at ServerResponse.res.render (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\response.js:798:7)
    at C:\wamp\www\Ayolan\web-server\app\controllers\mainController.js:25:17
    at Function.app.render (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\application.js:495:14)
    at ServerResponse.res.render (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\response.js:798:7)
    at module.exports.index (C:\wamp\www\Ayolan\web-server\app\controllers\mainController.js:13:13)
    at callbacks (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\router\index.js:164:37)
    at param (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\router\index.js:138:11)
    at pass (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\router\index.js:145:5)
    at Router._dispatch (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\router\index.js:173:5)

2 个答案:

答案 0 :(得分:1)

  

点击“运行:

   D:\Logiciels installés\nodejs\node.exe" --debug-brk=1337 web-server\app.js
   debugger listening on port 1337
     

但如果我进入网页,我什么都没有,只是这个错误:

   Code d'erreur : ERR_CONNECTION_ABORTED. 

这是预期的,因为你的“调试Web”运行配置有“--debug-brk = 1337”参数,这使得Node.js应用程序在启动后立即暂停。要恢复它,应该使用相同的端口启动Node.js远程调试会话。

  

现在,如果我在调试模式下运行它,则会打开两个调试控制台:Debug Web:

   "D:\Logiciels installés\nodejs\node.exe" --debug-brk=29855 --debug-brk=1337 web-server\app.js
   debugger listening on port 1337
   ... 

请注意,命令行包含两个重复的参数“--debug-brk = 29855”和“--debug-brk = 1337”。第一个参数“--debug-brk = 29855”由WebStorm附加,第二个参数取自“Debug Web”运行配置的“节点参数”字段。

WebStorm假设应用程序已准备好在端口29855上进行调试并等待连接。但根据输出(“调试器侦听端口1337”行),应用程序的调试器实际上是在端口1337上启动的。

接下来发生的事情是WebStorm看到另一个调试端口(1337)被打开并假设它是子节点进程的调试端口。因此,WebStorm启动与1337端口关联的“Node.js远程调试”运行配置。这就是你看到第二个控制台(“Debug Web slave#1”)的原因。

“Debug Web slave#1”控制台使用端口1337恢复应用程序执行。但是“Debug Web”控制台正在等待来自端口29855的连接(这就是为什么你看到“无法连接”)。

只需在“节点参数”字段中删除“--debug-brk =”(“调试Web”运行配置),它应该按预期工作。

希望这会有所帮助。

答案 1 :(得分:1)

Error: Failed to lookup view "..\views\game\layout.ejs"
   at Function.app.render (C:\wamp\www\Ayolan\web-server\node_modules\express\lib\application.js:493:17)
   ... 

不太可能是由环境变量引起的,因为默认情况下父环境变量会传递给应用程序。但是我建议你通过点击https://docs.google.com/file/d/0ByzbHcAxmCyvQ1ZqZTFhREpZNGM/edit上的“环境变量”来确保传递父环境变量(应该选中“包含父环境变量”)。

更可能错误地指定“工作目录”。确保它与从控制台启动应用程序时相同。