如何在Heroku上调试node.js应用程序部署?

如何在Heroku上调试node.js应用程序部署?,node.js,heroku,Node.js,Heroku,嗨,有没有办法调试部署在heroku服务器上的node.js应用程序 我无法在本地调试它,因为该应用程序正在接收来自第三方的post请求,并且我没有公共IP 谢谢 只需登录heroku,转到应用程序并单击“更多”按钮,即可轻松快捷 或者在项目文件夹中的控制台中键入heroku logs tail,我不知道为什么heroku没有更好地突出显示这一点,但是heroku远程调试所需的文档就在这里。目前,它的node.js信息需要一些更新以支持更新的inspector协议,但重要的细节都在那里 首先,您

嗨,有没有办法调试部署在heroku服务器上的node.js应用程序

我无法在本地调试它,因为该应用程序正在接收来自第三方的post请求,并且我没有公共IP


谢谢

只需登录heroku,转到应用程序并单击“更多”按钮,即可轻松快捷


或者在项目文件夹中的控制台中键入heroku logs tail,我不知道为什么heroku没有更好地突出显示这一点,但是heroku远程调试所需的文档就在这里。目前,它的node.js信息需要一些更新以支持更新的inspector协议,但重要的细节都在那里

首先,您需要编辑项目树根目录下的
Procfile
,告诉Heroku在启用调试的情况下启动节点:

web: node --inspect ./server.js (or ./app.js or whatever your entry point is)
然后,您需要使用该实用程序在计算机和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获得。对于,您需要创建一个如下所示的
launch.json
配置条目:

{
    "type": "node",
    "request": "attach",
    "name": "Heroku",
    "address": "localhost",
    "port": 9229,
    "protocol": "inspector",
    "localRoot": "${workspaceFolder}",
    "remoteRoot": "/app"
},

现在您应该能够在编辑器中启动调试会话,并在几秒钟内将其连接到正在运行的应用程序。所有正常的调试功能,包括断点、调用堆栈、变量检查等都应该可以工作。

2019回答Webstorm 2019.2
变化不大,但仍然:

  • 创建文件名
    Procfile
    (无扩展名)-->编辑它:

     web: node --inspect ./server.js (or ./app.js or whatever your entry point is)
    
    使用新文件部署代码

  • 启用连接-打开终端并运行:

     heroku ps:exec -a [YOUR_APP_NAME]
    
  • 获得$command提示符后,请执行以下操作:

        exit
    
    在终端:

        heroku ps:forward 9229 -a [YOUR_APP_NAME]
    
  • 创建“运行配置”:
    • “编辑配置”-->单击+-->“附加到节点/Chrome”-->默认设置很好,只需命名即可。
    • 选择“Chrome或Node>6.3以--inspect开头”
    • 单击调试按钮
    现在,假设您已连接到heroku服务器


    最后:删除Procfile并在没有它的情况下重新部署。

    你说得对!这是一个好的开始,但我需要一个调试器。我必须检查我收到的Json请求。理论上,可以使用req.body访问它的内容,但是req.body会为body属性抛出一个未定义的错误。如果我记录req,我会得到[object],如果我记录Json.stringify(req),我会收到一些循环错误。我别无选择,只能检查req对象:(@RaresI你成功克服了吗?也无法记录请求-同样的问题。如果有任何问题,我将不胜感激help@chenop对不起,伙计,我不记得我做了什么。这是很久以前的事了。这太完美了!虽然有一件事我不明白,为什么我必须并排运行
    ps:exec
    ps:forward
    ,并指定在我的
    launch.json
    中的协议。我使用ssh隧道连接到aws上的服务器,我可以通过ssh轻松连接,但它不适用于heroku,如果我只运行
    ps:forward
    命令,则不允许我连接。无论如何,这对我有效:Dcan你可以制作itI的视频吗?我只是这样做了,没有工作,我还有吗还有什么需要配置的吗?它会提示一条消息,上面写着“无法连接到目标:套接字挂起”官方文档:就在money上。Lifesaver。感谢您为Webstorm添加特定步骤!