要求一个模块从另一个模块内部出错

require a module from within another module errors

本文关键字:模块 另一个 内部 出错 一个      更新时间:2023-09-26

我是一个业余的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,反之亦然。在我使用node的时间里,我还没有弄清楚这种模式带来的各种错误。今天我看到了"要求不是一个函数错误"。注意:当我重新索引我的webstorm项目时,它正在工作,突然停止工作。话虽如此,我有许多类似的错误在过去与require语句和JS模块。因此,这是一个更系统的问题,我需要在脑子里解决。

好吧,我认为秘密是要了解如何模块。出口工作。首先,你需要创建一个"可导出"的对象,然后,设置它的属性和方法。

类似:

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类")并将其导出为模块。然后,我可以在代码的其他地方要求它和它的方法,因为这个属性是在可导出对象(这个)上设置的。