具有Node Js的Heroku调度程序

时间:2016-06-21 18:19:14

标签: node.js heroku scheduled-tasks

我已经按照这个答案here了,但是当我尝试拨打我的应用时没有任何反应。我在app.js中有我的主要功能,叫做

function start() { ... }

这是我存储在bin中的任务,我知道它在我打电话时有效:

#! /app/.heroku/node/bin/node
function mytask() {
  start();
}
initScrape();
process.exit();

之后:heroku run init mytask

λ heroku run init_scrape                                 
Running mytask on dyno1... up, run.5157   
/app/bin/mytask:3                                   
  start();                                               
  ^                                                      

ReferenceError: start is not defined                     
    at mytask (/app/bin/mytask:3:3)             
    at Object.<anonymous> (/app/bin/mytask:5:1)     
    at Module._compile (module.js:413:34)                
    at Object.Module._extensions..js (module.js:422:10)  
    at Module.load (module.js:357:32)                    
    at Function.Module._load (module.js:314:12)          
    at Function.Module.runMain (module.js:447:10)        
    at startup (node.js:148:18)                          
    at node.js:405:3                                     

1 个答案:

答案 0 :(得分:3)

您需要从定义它的位置开始导出,并且您的脚本需要要求定义start()的文件。否则怎么知道在哪里找到它?

所以你可能需要修改你的app.js然后说module.exports = start。然后在mytask文件中执行此操作:

#! /app/.heroku/node/bin/node
var start = require('./app.js');
function mytask() {
  start();
}
initScrape();
process.exit();