2016-06-21 73 views
2

我已經按照此答案here,它的工作原理,但是當我嘗試打電話給我的應用程序沒有任何反應。我有我的app.js main函數調用Heroku調度程序與節點Js

function start() { ... } 

它被保存在箱子我的任務,我知道它的工作原理,當我打電話:

#! /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          

回答

2

您需要從定義的位置開始導出,並且您的腳本需要定義已定義start()的文件。否則,它會如何知道在哪裏找到它?

所以你可能需要修改你的app.js並且說module.exports = start。然後在mytask文件中這樣做:

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