【问题标题】:Use Webstorm debugger with node.js将 Webstorm 调试器与 node.js 一起使用
【发布时间】:2014-01-18 23:18:29
【问题描述】:

几周前我尝试让 webstorm 调试器工作,但没有成功。 我今天再试一次,结果还是一样。

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

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

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)

但如果我打开“调试器”选项卡,我会收到“无法连接”。

第二个调试控制台“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 模式时,Debug Web 调试器选项卡尝试连接到 127.0.0.30xxx,30000 左右的随机端口,但失败并显示“无法连接”。

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

编辑

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)

【问题讨论】:

    标签: javascript node.js debugging webstorm


    【解决方案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 上的“环境变量”来确保传递父环境变量(应选中“包含父环境变量”)。

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

    【讨论】:

    • 我刚刚看了看,“包括父环境变量”复选框已经被选中。你是对的,这是因为路径,我的错误是在工作目录“C:\wamp\www\Ayolan\”而不是“C:\wamp\www\Ayolan\web-server”和Javascript文件“ web-server\app.js”而不是“app.js”。谢谢!
    【解决方案2】:

    当我点击运行时:

       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. 

    这是意料之中的,因为您的“Debug 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附加,第二个参数取自“调试Web”运行配置的“节点参数”字段。

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

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 感谢您的解释,我会尽快尝试,可能今晚。
    • 我刚刚尝试并编辑了主帖,我得到了错误而不是网页。如果我从 Windows 控制台或 cygwin 运行 node app.js,服务器将启动,我可以毫无问题地使用该页面。你知道为什么我从 IDE 运行它会失败吗?
    • 我也尝试过使用我的游戏网络服务,但我在白页上收到一条“未找到”消息。同上,如果我从控制台运行 node app.js,一切正常。
    • 看起来我可能错过了一个定义路径的环境变量,因为它看起来没有在好地方搜索文件,错过了一个目录......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多