【问题标题】:Debugging Node/Express --- require('express') creates a break调试节点/Express --- require('express') 创建一个中断
【发布时间】:2016-11-01 09:05:39
【问题描述】:

我在 Node 和 Express 方面相当有限的经验并没有帮助,但我在从终端窗口调试应用程序时遇到了问题。问题来了:

运行node debug app.js 返回:

< debugger listening on port 5858
connecting... ok
break in server.js:1
    1 var express = require('express');

这是调试快速应用的正确方法吗?

【问题讨论】:

    标签: debugging node.js express


    【解决方案1】:

    有一个流行的 GUI 调试器(利用 WebKit,即 Chrome、Safari..)。

    你应该试一试https://github.com/dannycoates/node-inspector

    【讨论】:

    • node-inspector 似乎是要走的路,谢谢。不过,我仍然不清楚的是如何访问服务器变量。例如,在此示例中,express 返回 undefined。
    • 我假设您想使用内置调试器检查变量?试着看看这里的例子nodejs.org/api/debugger.html 基本上你需要进入 REPL 模式,然后检查..
    • 添加正确的命令如何启动它,而不仅仅是留下链接......并赢得我的支持...... ^^
    【解决方案2】:

    只是更明确地回应对节点检查器的调用。

    $ sudo npm install -g node-inspector
    $ node-debug app.js <arguments to your app>
    debugger listening on port 5858
    Node Inspector is now available from http://localhost:8080/debug?port=5858
    Debugging `app.js`
    

    现在在(基于 webkit 的?)浏览器中转到该地址 - 或者它也可以在远程工作,只要端口是开放的。

    现在您可以完全访问所有暴露给客户端调试器的服务器端变量(例如app 对象)。这很神奇。您可以在app.get() 入口点、服务器初始化或任何位置设置断点。

    【讨论】:

    • 我无法让它工作。节点检查器打开,但没有找到 app.js。
    • 这应该是公认的答案 - 只是启动“node-inspector app.js”根本不会解决问题;)并且..只需留下一个链接“嘿,检查这个out" 对我来说并不是一个答案.. ^^
    【解决方案3】:

    就个人而言,我更喜欢结合使用 node-inspector 和老式的 console.log 语句来弄清楚发生了什么。 (我认为 node-inspector 提到的 v8-profiler 不适用于 Node 0.6.x,但老实说我没有尝试过。)

    如果其他人有更好维护的工具来调试 Node.js 应用程序,我也很想听听,但这是我所知道的最好的。

    猜你喜欢
    • 2017-10-07
    • 2012-10-12
    • 1970-01-01
    • 2015-09-22
    • 2019-02-27
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多