【问题标题】:How to stop Heroku from trying to start script with `npm start`?如何阻止 Heroku 尝试使用 `npm start` 启动脚本?
【发布时间】:2020-04-29 18:03:08
【问题描述】:

我正在构建一个基于服务器的应用程序,该应用程序在云中运行一系列自动化脚本(即“机器人”)。我已经提供了一个 Heroku Scheduler 实例来自动运行其中一个脚本,如下图 1 所示。

图 1. Heroku Scheduler 仪表板的屏幕截图

从图 1 可以看出,调度程序应该运行以下命令

node src/spiders/clusters/auctionMacro.js

每十分钟一次。这似乎正在按预期发生,如下图 2 所示。它显示了完整的日志输出。

从 2020-01-12T10:41:54.171208+00:00 开始的五个日志条目似乎确认 node src/spiders/clusters/auctionMacro.js 的预期命令正在按预期发生,并且脚本正在按预期执行。

但是,以下三个日志条目表明调度程序也在尝试运行命令 npm start 并导致脚本崩溃。

2020-01-12T11:00:13.464651+00:00 heroku[web.1]:使用命令 npm start 启动进程
2020-01-12T11:00:15.143335+00:00 heroku[web.1]:状态从开始变为崩溃
2020-01-12T11:00:15.080831+00:00 应用程序 [web.1]:npm 错误!缺少脚本:开始

对此我能做些什么?我可以以某种方式关闭npm start 命令吗?或者采取其他措施来纠正问题并防止脚本崩溃?

heroku logs生成的完整日志输出如下。

图 2.$ heroku logs 的完整输出

2020-01-12T10:41:46.690564+00:00 app[api]:使用命令 node src/spiders/clusters/auctionMacro.js 由用户 scheduler@addons.heroku.com 启动进程
2020-01-12T10:41:54.171208+00:00 heroku[scheduler.2053]:使用命令 node src/spiders/clusters/auctionMacro.js 启动进程
2020-01-12T10:41:54.864597+00:00 heroku[scheduler.2053]:状态从开始变为向上
2020-01-12T10:41:56.797007+00:00 app[scheduler.2053]: [成功的脚本日志]
2020-01-12T10:41:56.799138+00:00 app[scheduler.2053]: [成功的脚本日志]
2020-01-12T10:41:56.799853+00:00 app[scheduler.2053]: [成功的脚本日志]
2020-01-12T10:41:56.893782+00:00 app[scheduler.2053]: [成功的脚本日志]
2020-01-12T10:41:59.126489+00:00 heroku[scheduler.2053]:状态从 up 变为 complete
2020-01-12T10:41:59.111484+00:00 heroku[scheduler.2053]:进程以状态 0 退出
2020-01-12T10:49:21.119405+00:00 app[api]:使用命令 node src/spiders/clusters/auctionMacro.js 由用户 myemail@example.com 启动进程
2020-01-12T10:49:29.862904+00:00 heroku[run.9372]:状态从开始变为向上
2020-01-12T10:49:29.827990+00:00 heroku[run.9372]:等待客户端
2020-01-12T10:49:29.878338+00:00 heroku[run.9372]:使用命令 node src/spiders/clusters/auctionMacro.js 启动进程
2020-01-12T11:00:05.438362+00:00 heroku[web.1]:状态从崩溃变为启动
2020-01-12T11:00:13.464651+00:00 heroku[web.1]:使用命令 npm start 启动进程
2020-01-12T11:00:15.143335+00:00 heroku[web.1]:状态从开始变为崩溃
2020-01-12T11:00:15.080831+00:00 应用程序 [web.1]:npm 错误!缺少脚本:开始
2020-01-12T11:00:15.088306+00:00 应用[web.1]:
2020-01-12T11:00:15.088587+00:00 应用程序 [web.1]:npm 错误!可以在以下位置找到此运行的完整日志:
2020-01-12T11:00:15.088690+00:00 应用程序 [web.1]:npm 错误! /app/.npm/_logs/2020-01-12T11_00_15_081Z-debug.log
2020-01-12T11:00:15.130770+00:00 heroku[web.1]:进程以状态 1 退出
2020-01-12T11:08:51.893315+00:00 heroku[run.9372]:客户端连接已关闭。向所有进程发送 SIGHUP
2020-01-12T11:08:52.437813+00:00 heroku[run.9372]:状态从 up 变为 complete
2020-01-12T11:08:52.421870+00:00 heroku[run.9372]:进程以状态 129 退出
me@My-MacBook-Air puppeteer % heroku maint
2020-01-12T22:15:01.428118+00:00 app[scheduler.9940]: == 开始时间:2020-01-12 22:04:21.402
2020-01-12T22:15:01.428167+00:00 应用程序[scheduler.9940]:
2020-01-12T22:15:02.410217+00:00 heroku[scheduler.9940]:使用 SIGTERM 停止所有进程
2020-01-12T22:15:02.481455+00:00 heroku[scheduler.9940]:进程以状态 143.929 退出(运行 10.7 分钟)

编辑:

Based on this SO answer,我运行了以下命令

heroku scale web=0

并在终端收到如下响应

缩放测功机...完成,现在在 0:Free 运行网络

我不确定这意味着什么,或者这是否是我应该前进的方向。

【问题讨论】:

    标签: javascript node.js heroku npm scheduled-tasks


    【解决方案1】:

    解决方案对我来说有两个部分。我在实现这两个部分后解决了这个问题。

    首先,我必须使用以下终端命令关闭npm start,如对 OP 的编辑中所示。

    heroku scale web=0
    

    其次,我必须配置我的 buildpacks 和 puppeteer.launch() 选项以支持在 Heroku 服务器环境中运行,如下所示。

    首先,我清除所有构建包,然后添加 puppeteer-heroku-buildpack 和 heroku/nodejs 一个:

    $ heroku buildpacks:clear
    $ heroku buildpacks:add --index 1 https://github.com/jontewks/puppeteer-heroku-buildpack
    $ heroku buildpacks:add --index 1 heroku/nodejs
    

    然后,将以下参数添加到 puppeteer 启动函数中:

    const browser = await puppeteer.launch({
      args : [
        '--no-sandbox',
        '--disable-setuid-sandbox',
      ],
    });
    

    最后,将其部署回 Heroku:

    $ git add .
    $ git commit -m "Fixing deployment issue"
    $ git push heroku master
    

    The source of this second item is this SO answer.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-07
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      • 2015-11-05
      • 2020-06-30
      • 2018-05-30
      相关资源
      最近更新 更多