如何在 heroku 上远程调试 node.js 应用程序?

Posted

技术标签:

【中文标题】如何在 heroku 上远程调试 node.js 应用程序?【英文标题】:How to remote debug a node.js app on heroku? 【发布时间】:2017-01-05 23:48:12 【问题描述】:

我目前正在构建一个 node.js 聊天机器人,然后我将其部署在 heroku 上。 该应用程序使用 webhook,该 webhook 必须位于服务器可以访问的公共 URL。因此,在我的机器上本地运行服务器将无法正常工作。有没有办法远程调试我的应用程序?有什么建议吗?

【问题讨论】:

【参考方案1】:

我会考虑使用一种工具将公共 URL 连接到本地运行的应用实例。

选项 1:ngrok

一个简单的方法是ngrok

选项 2:ssh 反向隧道

如果您可以访问任何具有 ssh 和管理员权限的面向 Internet 的服务器以启用 GatewayPorts yes sshd 配置,则可以使用 ssh 远程隧道来实现。例如:

ssh -n -R 8080:localhost:3000 myserver.example.com

将允许发送到 http://myserver.example.com:8080 的 webhook 隧道连接到您在端口 3000 上侦听的本地应用。

More details on ssh tunneling can be found here

【讨论】:

【参考方案2】:

您确实可以使用ngrok 等免费代理服务在本地计算机上调试 webhook。

如果你想在 Heroku 上调试它,你可以使用 heroku logs --tail 查看你的实时日志或使用存储日志的插件服务。

【讨论】:

【参考方案3】:

找到了一个更简单的解决方案。

安装LogDNA 插件,然后运行应用程序并查看错误堆栈跟踪。

那么当你看到错误以及它发生在哪一行时,很容易找到问题。

【讨论】:

【参考方案4】:

使用 Papertrail 插件或者也可以使用这里提到的日志记录选项https://devcenter.heroku.com/articles/logging。

【讨论】:

欢迎提供解决方案链接,但请确保您的答案在没有它的情况下有用:add context around the link 这样您的其他用户就会知道它是什么以及为什么会出现,然后引用最相关的您链接到的页面的一部分,以防目标页面不可用。 Answers that are little more than a link may be deleted.

以上是关于如何在 heroku 上远程调试 node.js 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何让本地heroku应用程序连接到远程REDIS?

在Visual Studio上开发Node.js程序——远程调试及发布到Azure

如何在 Heroku 上使用 Node.js 通信 Web 和 Worker dynos?

Node.js - 在 Heroku 上使用 MongoHQ 连接到 MongoDB

如何使用源映射远程调试 Node.js 应用程序(使用 WebStorm)

如何将 node.js 应用程序部署到 heroku?有没有可能?