【发布时间】:2016-11-28 20:44:45
【问题描述】:
嗨,有没有办法调试部署在 heroku 服务器上的 node.js 应用程序。
我无法在本地调试它,因为该应用正在接收来自第 3 方的一些发布请求,并且我没有公共 IP。
谢谢。
【问题讨论】:
嗨,有没有办法调试部署在 heroku 服务器上的 node.js 应用程序。
我无法在本地调试它,因为该应用正在接收来自第 3 方的一些发布请求,并且我没有公共 IP。
谢谢。
【问题讨论】:
【讨论】:
我不知道为什么 Heroku 没有更好地突出这一点,但是使用 Heroku 进行远程调试所需的文档在 Heroku Exec (SSH tunneling) page 上。目前它的 node.js 信息需要一些更新以支持更新的检查器协议,但重要的细节都在那里。
首先,您需要编辑项目树根目录下的Procfile,以告诉 Heroku 在启用调试的情况下启动 Node:
web: node --inspect ./server.js (or ./app.js or whatever your entry point is)
然后您需要使用Heroku CLI 实用程序在您的计算机和 Heroku 应用程序之间建立调试端口。如果您还没有安装它,请阅读有关如何安装它的文档并将其登录到您的 Heroku 帐户。
要启用连接,您需要运行一次:
heroku ps:exec
或者如果您运行多个 Heroku 应用程序:
heroku ps:exec -a my-app-name
收到$ 命令提示符后,按 ctrl-C 退出。
接下来,启动隧道:
heroku ps:forward 9229 [-a my-app-name]
现在您的应用程序可以从任何支持 Node.js 调试的 IDE 中使用。对于Visual Studio Code,您需要创建一个如下所示的launch.json 配置条目:
{
"type": "node",
"request": "attach",
"name": "Heroku",
"address": "localhost",
"port": 9229,
"protocol": "inspector",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
},
您现在应该能够在编辑器中启动调试会话,并在几秒钟内将其连接到正在运行的应用程序。所有正常的调试功能,包括断点、调用堆栈、变量检查等都应该可以工作。
【讨论】:
ps:exec 和ps:forward 并在我的launch.json 中指定协议。我使用 ssh-tunneling 连接到我在 aws 上的服务器,我可以通过 ssh 轻松连接,但它不适用于 heroku,并且如果我只运行 ps:forward 命令,则不允许我连接无论如何,这适用于我:D
2019 年 Webstorm 2019.2 答案
变化不大,但仍然:
创建一个文件名Procfile(无扩展名)--> 编辑它:
web: node --inspect=9090 ./server.js
(或 ./app.js 或任何你的入口点)
使用新的 Procfile 部署代码!
启用连接 - 打开终端并运行:
heroku ps:exec -a [YOUR_APP_NAME]
一旦你得到一个 $ 命令提示符,写:
exit
在终端:
heroku ps:forward 9090 -a [YOUR_APP_NAME]
现在你应该连接到你的 Heroku 服务器。
最后:删除 Procfile 并在没有它的情况下再次部署。
【讨论】: