2016-11-28 2 views
0

Я пытаюсь заставить логин работать в планировщике, но получаю ошибку module.exports.report.logon is not a function. Это код:module.exports.report.logon не является функцией

const cron = require('node-cron'); 
const cms = require("g4js-cognos").Cms; 
module.exports.report = new cms(url, namespace, usr, psw); 

let task = cron.schedule('*/1 * * * *', function() { 
    logonToCognos(); 
}, true); 

task.start(); 

function logonToCognos() { 
    module.exports.report.logon().then((response) => { // THE ERROR 
     console.log(" LOGGED on, status: " + response.statusCode); 
    }).catch((error) => { 
     console.log(" Logon on fail: " + error); 
    }); 
} 

Когда я не использую scheduller и module.exports.report находится вне функции, все работает отлично:

const cms = require("g4js-cognos").Cms; 
module.exports.report = new cms(url, namespace, usr, psw); 

module.exports.report.logon().then((response) => { 
    console.log(" LOGGED on, status: " + response.statusCode); 
}).catch((error) => { 
    console.log(" Logon on fail: " + error); 
}); 

Кроме того, если я не использую module.exports, он работает нормально (но мне нужно использовать экспорт, потому что он мне нужен в другом модуле):

const cms = require("g4js-cognos").Cms; 
const report = new cms(url, namespace, usr, psw); 

let task = cron.schedule('*/1 * * * *', function() { 
    logonToCognos(); 
}, true); 

task.start(); 

function logonToCognos() { 
    report.logon().then((response) => { // NO ERROR 
     console.log(" LOGGED on, status: " + response.statusCode); 
    }).catch((error) => { 
     console.log(" Logon on fail: " + error); 
    }); 
} 

Любые идеи? Почему mod.exports работает так по-другому? Благодарю.

+0

Вероятно, что-то делать с размахом. Вы попадаете в область функций logonToCognos, поэтому модуль не может быть определен. Вы пытались передать построенные cms в качестве параметра функции? – kriddy800

+0

Если вместо module.exports.report, я помещаю сообщение const, тогда он работает нормально. Почему mod.export ведет себя так по-другому? – ljerka

+0

Я редактировал вопрос, чтобы иметь этот пример. – ljerka

ответ

1

попробовать это:

const cron = require('node-cron'); 
const cms = require("g4js-cognos").Cms; 

// init your class 
const report = new cms(url, namespace, usr, psw); 

// define what to do after logon 
report.logon().then((response) => { 
    console.log(" LOGGED on, status: " + response.statusCode); 
}).catch((error) => { 
    console.log(" Logon on fail: " + error); 
}); 

// define cron job 
const task = cron.schedule('*/1 * * * *', function() { 
    report.logon(); 
}, true); 

// start cron job 
task.start(); 

// finally export your class 
module.exports.report = report; 

может быть, это может помочь вам module.exports

0

попробовать инъекционные module.exports.report:

const cron = require('node-cron'); 
    const cms = require("g4js-cognos").Cms; 
    module.exports.report = new cms(url, namespace, usr, psw); 

    let task = cron.schedule('*/1 * * * *', function() { 
     logonToCognos(module.exports.report); 
    }, true); 

    task.start(); 

    function logonToCognos(report) { 
     report.logon().then((response) => { // THE ERROR 
      console.log(" LOGGED on, status: " + response.statusCode); 
     }).catch((error) => { 
      console.log(" Logon on fail: " + error); 
     }); 
    } 
+0

Got "report.logon не является функцией" – ljerka

Смежные вопросы