2016-03-31 61 views
0

我是nodejs的新手,我寫了一個nodejs程序並使用node-schedule每分鐘安排一次。但運行一段時間,並在控制檯上生成一對夫婦的日誌後,的NodeJS拋出錯誤this.job.execute is not a functionNodejs node-schedule npm拋出錯誤「this.job.execute不是函數」

這裏是我使用的代碼:

var nodeSchedule = require('node-schedule'); 

runJob(); 

function runJob(){ 
    console.log("start"); 
    nodeSchedule.scheduleJob('0 * * * * *',require('./prodModules.js')); 

} 

我得到的日誌是:

C:\Users\1060641\Downloads\NodeJS HealthReport\Collector>node src\main\nodejs\collector_main.js 
start 
Connected 
Ready 
logged in as Super User 
nfs_check running... 
NFS Check completed 
snapchart_check running... 
C:\Users\1060641\node_modules\node-schedule\lib\schedule.js:177 
    this.job.execute(); 
      ^

TypeError: this.job.execute is not a function 
    at Job.invoke (C:\Users\1060641\node_modules\node-schedule\lib\schedule.js:177:14) 
    at null._onTimeout (C:\Users\1060641\node_modules\node-schedule\lib\schedule.js:445:11) 
    at Timer.listOnTimeout (timers.js:92:15) 

C:\Users\1060641\Downloads\NodeJS HealthReport\Collector> 

我認爲我的prodModules.js沒有什麼問題,因爲它可以獨立運行。 調度拋出錯誤。

請幫忙。

+0

如果你認爲這是與庫是錯誤的,所以在github上檢查出的問題。這是我首先看的地方。 – jmugz3

+0

你確定'require('./prodModules.js')'返回你認爲它的作用嗎?並且「scheduleJob」期望它作爲第二個參數嗎? –

+0

@ Kevin-B:你說得對。我沒有在函數中包含prodModules.js,並調用js文件,這就是爲什麼它拋出了prodModules不是函數的錯誤。所以我將整個代碼包裝在prodModules.js中的export.myFunc = function(){}中,現在它工作的很好。 感謝凱文暗示:) – aiman

回答

1

嘗試重新導入'node-schedule',我用新的導入運行了您的代碼,並且它按預期工作。

要向下進口CMD上的窗口:> NPM安裝節點調度

0

節點的調度回調必須是一個函數。 您runJob更改爲這樣的事情:

function runJob() { 
    console.log("start"); 
    nodeSchedule.scheduleJob('0 * * * * *', function() { 
     require('./prodModules.js'); 
    }); 
} 
相關問題