[英]Pass data to custom npm package module
我是构建自定义npm软件包的新手,并且迷失了使用来自它正在使用的应用程序的数据来配置它的信息。
编辑:这只是一个例子,但是应用程序将具有更多方法,并且其中许多方法将使用假a和b。
基本上在App上,我需要这样的包装:
var a = 'a';
var b = 'b';
var module = require('module')(a, b);
module.test();
我在他的索引文件中的模块具有:
var a;
var b;
function test() {
return {
a: a,
b: b
};
}
module.exports = function(_a, _b) {
a = _a;
b = _b;
return {
test: test
}
};
如您所料,它没有按我预期的那样工作...如何将自定义数据传递给npm包,并能够在我的方法中使用这些数据?
你不应该使用这样的东西
var a = 'a';
var b = 'b';
var module = require('module');
module.init(a,b);
// do some other code....
module.test();
并在您的模块中像这样:
var _a = null;
var _b = null;
var test = function() {
return {
a: _a,
b: _b
}
}
var init = function(a, b) {
_a = a;
_b = b;
}
module.exports = {
init,
test
};
您对模块的定义绝对正确,但这取决于您计划使用它的方式!
如果您想使用它,就像发布在npm-registry上一样,则需要使用此处描述的过程: 使用npm安装本地模块?
我知道这是一个示例,但对于其他读者-您不应该使用名称module
因为Node已经使用了名称module
。
如果您只是使用模块化方法来生产更大的应用程序,并且想要使用文件的导出,则需要通过指向文件来要求文件。 例如,如果此文件名为module.js
并且与需要该文件的脚本位于同一目录中,则使用:
var myModule = require('./module.js')(a, b);
如果在另一个目录中,则使用普通的相对路径导航语法,例如../module.js
如果它在一个目录中)或./lib/module.js
如果在一个名为lib
的子目录中)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.