传递参数不适用于模块导出

时间:2018-04-18 16:53:06

标签: javascript node.js

我想将一个参数传递给另一个模块,然后从该模块调用一个函数(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

我做错了什么?

2 个答案:

答案 0 :(得分:0)

两件事:

  1. 您已将库构建为函数而不是对象,类或构造函数。无法在printMessage之外引用libService

  2. 您应该将导入行视为声明,稍后再单独调用该函数。

    //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);
    }
    
  3. 如果需要,可以将printMessage声明移到libService函数之外。

答案 1 :(得分:0)

libService应该返回一个对象

module.exports = function libService( msg ) {
    let msgToPrint = msg;
    return {
        printMessage() {
            console.log(msgToPrint);
        }
    }
}