我想将一个参数传递给另一个模块,然后从该模块调用一个函数(Node.js ver 6.11):
//app.js *********
myService = require(‘./lib.js’)(“Hello World”);
myService.printMessage();
//lib.js **********
var msgToPring;
module.exports = function libService(msg) {
msgToPring = msg;
function printMessage(){
console.log(msgToPring);
}
}
当我运行程序时,它在“第二行”的app.js中失败:
Cannot read property 'printMessage' of undefined
我做错了什么?
答案 0 :(得分:0)
两件事:
您已将库构建为函数而不是对象,类或构造函数。无法在printMessage
之外引用libService
。
您应该将导入行视为声明,稍后再单独调用该函数。
//app.js *********
myService = require(‘./lib.js’);
myService("Hello World");
//lib.js **********
var msgToPring;
module.exports = function libService(msg) {
msgToPring = msg;
function printMessage(){
console.log(msgToPring);
}
printMessage(msgToPring);
}
如果需要,可以将printMessage
声明移到libService函数之外。
答案 1 :(得分:0)
libService
应该返回一个对象
module.exports = function libService( msg ) {
let msgToPrint = msg;
return {
printMessage() {
console.log(msgToPrint);
}
}
}