Heroku 上的预定工作人员

Scheduled worker on Heroku

我正在处理 运行 在 Heroku 上安排的这个组件,但我无法 运行 正确地完成它。我关注了 this and 个帖子以使其正常运行。根据 heroku logs,我设法 运行 heroku 上的计划任务。我遇到的问题是,如果我 运行 模块中的代码(我需要按计划 运行 )它不会 运行 xray 模块,我不确定为什么会这样。

这是我没有模块的代码及其输出,如果我 运行 根据此处附加的链接之一从 bin 文件夹中获取代码,这就是 heroku 将对 运行计划任务:

var Xray = require('x-ray');

// helpers
var x = Xray({
  filters: {
    cleanPrice: function (value) {
      return typeof value === 'string' ? value.replace(/\r|\t|\n|€/g, "").trim() : value
    },
    whiteSpaces: function (value) {
      return typeof value === 'string' ? value.replace(/ +/g, ' ').trim() : value
    }
  }
});

console.log("START - Scraping categories...");

x('http://google.com', 'title')(function (err, title) {
  console.log(title) // Google
})

λ bin\node init START - Scraping categories... Google

这是我在模块中的代码和输出

module.exports = {
  start: function () {

    var Xray = require('x-ray');

    // helpers
    var x = Xray({
      filters: {
        cleanPrice: function (value) {
          return typeof value === 'string' ? value.replace(/\r|\t|\n|€/g, "").trim() : value
        },
        whiteSpaces: function (value) {
          return typeof value === 'string' ? value.replace(/ +/g, ' ').trim() : value
        }
      }
    });

    console.log("START - Scraping categories...");

    x('http://google.com', 'title')(function (err, title) {
      console.log(title) // Google
    })

  }
}

输出

λ bin\node init START - Scraping categories...

我漏了 "Google" 这个词。如果我将代码放在模块中,为什么会发生这种情况???

问题出在实际任务中

#! /app/.heroku/node/bin/node

"use strict";

var app = require('../src/app.js');
function initScrape() {
  app.start();
}
initScrape();
process.exit(1); // tell node to exit (prevent promise)

通过添加 process.exit(1); 我阻止了任何要解决的承诺。这是nodejs停止执行所需要的。