【问题标题】:How could I debug a node.js App deploy on Heroku?如何调试在 Heroku 上部署的 node.js 应用程序?
【发布时间】:2016-11-28 20:44:45
【问题描述】:

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

我无法在本地调试它,因为该应用正在接收来自第 3 方的一些发布请求,并且我没有公共 IP。

谢谢。

【问题讨论】:

    标签: node.js heroku


    【解决方案1】:

    只需登录 heroku,转到您的应用并单击“更多”按钮即可。

    或在项目文件夹的控制台中输入heroku logs tail

    【讨论】:

    • 你是对的!这是一个好的开始,但我需要一个调试器。我必须检查收到的 Json 请求。理论上可以使用 req.body 访问它的内容,但是 req.body 会为 body 属性抛出一个未定义的错误。如果我记录 req,我会得到 [object] 如果我记录 Json.stringify(req) 我会收到一些循环错误。我别无选择,只能检查 req 对象:(
    • @Rares你成功克服了吗?也无法记录 req - 同样的问题。如果有任何帮助,我将不胜感激
    • @chenop 对不起,伙计,我不记得我做了什么。那是很久以前的事了
    【解决方案2】:

    我不知道为什么 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:execps:forward 并在我的launch.json 中指定协议。我使用 ssh-tunneling 连接到我在 aws 上的服务器,我可以通过 ssh 轻松连接,但它不适用于 heroku,并且如果我只运行 ps:forward 命令,则不允许我连接无论如何,这适用于我:D
    • 你能拍个视频吗
    • 我刚刚做了这个但没有工作,我还有什么要配置的吗?它提示一条消息“无法连接到目标:套接字挂起”
    • 正确的钱。救生员。
    【解决方案3】:

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

    1. 创建一个文件名Procfile(无扩展名)--> 编辑它:

       web: node --inspect=9090 ./server.js 
      

      (或 ./app.js 或任何你的入口点)

    2. 使用新的 Procfile 部署代码!

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

       heroku ps:exec -a [YOUR_APP_NAME]
      

    一旦你得到一个 $ 命令提示符,写:

        exit
    

    在终端:

        heroku ps:forward 9090 -a [YOUR_APP_NAME]
    
    1. 创建“运行配置”:
    • "Edit Configurations" --> 点击 + --> "Attach to node/Chrome" --> 将端口更改为 9090 并命名。
    • 选择“Chrome or Node > 6.3 started with --inspect”
    • 好的
    • 点击调试

    现在你应该连接到你的 Heroku 服务器。

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

    【讨论】:

    • 感谢您为 Webstorm 添加特定步骤!
    猜你喜欢
    • 2023-03-23
    • 2018-04-11
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多