我正在研究在Heroku上运行的这个组件,但我无法使其正常运行。我按照this和this帖子进行操作。我设法根据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 - 刮刮类别...... 谷歌
这是我在模块中的代码和输出
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 - 刮刮类别......
我错过了“Google”这个词。如果我将代码放在模块中,为什么会这样呢?
答案 0 :(得分:0)
问题在于实际任务
#! /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停止执行所必需的。