2016-03-31 2 views
0

Ich bin neu bei Nodejs und ich habe ein Nodejs-Programm geschrieben und es jede Minute mit dem Node-Zeitplan geplant. aber nach einiger Zeit laufen und ein paar von Protokollen auf der Konsole zu erzeugen, NodeJS wirft Fehler, dass this.job.execute is not a functionNodejs Knoten-Zeitplan Npm wirft Fehler "this.job.execute ist keine Funktion"

hier ist der Code Ich verwende:

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

runJob(); 

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

} 

die Protokolle Ich erhalte ist:

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> 

Ich glaube nicht, dass es etwas falsch mit meinem prodModules.js seit dem Ausführen von eigenständigen läuft es gut. Scheduling wirft Fehler.

Bitte helfen.

+0

Wenn Sie denken, dass es ein Fehler mit der Bibliothek ist, so die Probleme in Github überprüfen. Da würde ich zuerst nachsehen. – jmugz3

+0

Sind Sie sicher, dass 'require ('./ prodModules.js')' zurückgibt, was Sie denken, dass es tut? und ist es das, was 'scheduleJob' als zweiten Parameter erwartet? –

+0

@ Kevin-B: Du hattest Recht. Ich hüllte die prodModules.js nicht in eine Funktion ein und rief die js-Datei auf, deshalb warf sie den Fehler auf, dass prodModules keine Funktion ist. Also habe ich den ganzen Code in prodModules.js in eine export.myFunc = function() {} geschrieben und es funktioniert jetzt gut. Danke Kevin für Hinweise :) – aiman

Antwort

1

Versuchen Sie 'node-schedule' erneut zu importieren, ich habe Ihren Code mit einem neuen Import ausgeführt, und es funktioniert wie erwartet.

nach unten Import auf Windows cmd:> npm installieren node-Zeitplan

0

Der Knoten-Scheduler Rückruf eine Funktion sein muss. ändern runJob so zu etwas:

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