需要来自另一个模块中的模块错误

时间:2016-09-19 22:32:12

标签: javascript node.js express-4

我是业余nodejs开发人员。我在使用javascript模块时遇到了很多问题,并且需要来自其他模块的模块。这是我需要帮助的场景。

假设我在一个文件中有API定义,如(userApi)

var userFunctions = require('./userFunctions.js')()

module.exports = function(){

module.getUser = function(req.res){
    userFunctions.getUser(req.id, function(err,user){
      if(err) return res(err)
      return res(null,user)
    })
}

return module;
}

辅助模块,如(userFunctions.js)

var paymentFunctions = require('../payment/paymentFunctions.js')()

module.exports = function(){
module.getUser = function(id,res){
//logic
}
return module;
}

另一个辅助模块,如(paymentFunctions.js)

var userFunctions = require('../user/userFunctions.js')()

module.exports = function(){
  module.makePayment = function(req,res){
    userFunctions.getUser(req.id, function(err){
      if(err) return res(err)
      return res(null)
    })
  }
return module;
}

正如您所看到的,我的所有助手和API都在模块内部。我还在require语句的末尾添加括号。您可能还注意到paymentFunctions需要userFunctions,反之亦然。在我使用节点期间,我还没有弄清楚这种模式带来的各种错误。今天我看到"要求不是功能错误"。注意:当我为webstorm项目编制索引时,它正在工作并突然停止工作。话虽如此,我在过去使用require语句和JS模块时遇到了许多类似的错误。因此,我需要在大脑中解决这个问题。

1 个答案:

答案 0 :(得分:0)

嗯,我认为秘诀是了解module.exports的工作原理。首先,您需要创建一个“可导出”对象,然后设置其属性和方法。

类似的东西:

var userFunctions = require('./userFunctions.js');
//Lets say this is your userApi class
module.exports = function () {
    this.getUser = function (req, res) {
        userFunctions.getUser(req.id, function (err, user) {
            if (err) return res(err)
            return res(null, user)
        });
    }
};

在这种情况下,我创建了一个对象(实际上是“Javascript类”)并将其导出为AS模块。然后,我可以在其他代码位置要求它和它的方法,因为这个属性是在可导出对象上设置的(this.prop = ...)。