要求一个模块从另一个模块内部出错
require a module from within another module errors
我是一个业余的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类")并将其导出为模块。然后,我可以在代码的其他地方要求它和它的方法,因为这个属性是在可导出对象(这个)上设置的。
相关文章:
- 从一个模块暴露到另一个模块
- 从导出的模块返回变量,并在另一个文件(NodeJS)中使用它
- 如何从另一个模块调用函数
- 无法调用requirejs中的另一个模块
- 在另一个模块中重用私有jQuery函数
- 从另一个模块访问作用域的指令
- 将模块函数传递给另一个文件中的函数
- 节点 js 从客户端和另一个节点模块调用相同的延迟函数
- 在 node.js 中,模块中的一个文件如何查看模块中另一个文件中的函数
- webpack 1:resolve.alias 不将一个 npm 模块别名到另一个 npm 模块
- 无法从 Dojo 模块调用另一个 Dojo 模块中的函数
- nodejs 将值从一个模块传递到另一个模块
- JavaScript 将一个模块“导入”到另一个模块中
- 在打字稿中隐式引用另一个内部模块
- 如何将方法导出到另一个模块
- 使用在另一个服务方法中声明为模块模式的服务方法之一
- 使用 on nodejs 从另一个模块捕获事件
- 使用 Sinon.js 测试一个函数是否调用 ES6 模块中的另一个函数
- 来自另一个模块的 Angularjs 路由控制器
- 依赖注入工厂模块另一个