将数据传递到自定义 npm 包模块



我是构建自定义 npm 包的新手,我迷失了使用来自它正在使用的应用程序的数据来配置它。

编辑:这只是一个例子,但该应用程序将有更多的方法,这些假的a和b将从许多这些方法中使用。

基本上在应用程序上,我以这种方式要求我的软件包:

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 注册表上一样,那么你需要使用下面描述的过程:使用 npm 安装本地模块?

我知道这是一个示例,但对于其他读者 - 您不应该使用名称module,因为它已经被 Node 使用。

如果您只是使用模块化方法来生成更大的应用程序,并且想要使用文件的导出,则通过指向该文件来需要该文件。例如,如果此文件被调用module.js并且与需要它的脚本位于同一目录中,则使用:

  var myModule = require('./module.js')(a, b);

如果你把它放在另一个目录中,那么使用正常的相对路径导航语法,比如../module.js如果它在一个目录中,或者如果它在一个名为lib的子目录中,则./lib/module.js

最新更新