[英]How to Use one module feature within another module in nodejs require()
我想在另一个模块中使用一个模块功能
文件main.js
var _ = require("./underscore.js");
var foo = require("./bar.js");
foo.publish(...);
文件bar.js
(function(e) {
var array = [...];
e.publish = function(t, args) {
_.each(array, function(...) {...});
});
})(exports);
我已经尝试了几种变体,但是我不确定解决此错误的最佳方法:
ReferenceError: _ is not defined
是的,对于您的示例,应该在每个需要该变量的模块中使用。
var _ = require("./underscore.js");
但是,如果您需要在多个模块之间转移一个对象实例,则可以使用流程对象使其成为全局对象。 但这是坏习惯。
process._ = require("./underscore.js");
在模块之间传递对象实例的好方法是将它们作为函数参数传递,但是您需要更改bar.js以返回工厂函数,而不是对象本身。
module.exports = function(_) {
var e = {};
var array = [...];
e.publish = function(t, args) {
_.each(array, function(...) {...});
});
return e;
}
在main.js中:
var _ = require("./underscore.js");
var foo = require("./bar.js")(_);
foo.publish(...);
我希望你明白了。
您将结果分配给的变量是模块main.js的局部变量,因此您无法在bar.js中访问它。 相反,您还应该在bar.js中需要下划线模块。
您也可以在声明_
时跳过var
并将其设置为全局变量,但这带来了全局变量的所有问题,例如:
bar.js
模块没有明确说明其依赖关系,因此很难理解它期望全局下划线。 _ = require(underscore)
,则会再次得到未定义的错误,并且可能很难理解为什么; bar.js
所有其他模块也需要underscore
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.