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

Javascript 将数据传递到自定义npm包模块,javascript,node.js,Javascript,Node.js,我刚开始构建定制的npm软件包,但我不知道如何使用来自应用程序的数据来配置它 编辑:这只是一个例子,但该应用程序将有更多的方法和那些假的a和b将使用这些方法中的许多 基本上,在应用程序上,我要求我的软件包是这样的: var a = 'a'; var b = 'b'; var module = require('module')(a, b); module.test(); 他的索引文件中的我的模块具有: var a; var b; function test() { return {

我刚开始构建定制的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
};

你不应该这样用吗

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注册表上发布的一样,那么您需要使用下面描述的过程:

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

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

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

如果它位于另一个目录中,则使用正常的相对路径导航语法,如
。/module.js
(如果它位于一个目录中),或
/lib/module.js
(如果它位于名为
lib

的子目录中),则模块的定义绝对正确,但这取决于您计划如何使用它

如果您想使用它,就好像它是在npm注册表上发布的一样,那么您需要使用下面描述的过程:

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

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

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

如果它位于另一个目录中,则使用正常的相对路径导航语法,如
。/module.js
如果它位于一个目录中,或
/lib/module.js
如果它位于名为
lib

的子目录中,则使用

否,因为我将有几种方法使用这些配置,并且我不能每次都传递这些配置时间我希望在开始时按照以下模式执行:
require('module')(数据)可能是这样,更新了吗?这是未经测试的tho,只是从脑海中:)不,因为我将有几个方法使用这些配置,我不能每次都通过这些配置。我希望在开始时按照以下模式执行:
require('module')(数据)可能是这样,更新了吗?这是未经测试的tho,仅从脑海中:)这应该可以像您预期的那样工作,在我的机器上也是如此-您是否尝试为您的模块使用名称
模块
,或者它只是一个示例?如果是这样,请尝试将其重命名为其他名称,因为“模块”是一个预定义的模块?它看起来没有收到这两个变量…您在此处发布的代码没有问题。可能是你的原始代码有问题。如果你们没有问题,也许你是对的,应用程序中还有另一个bug。谢谢你的提示和检查,我将更深入地了解。其他东西不需要返回测试函数
module.test()
将执行您打算执行的操作。只需包含
module.exports.test=function(){}
这应该可以像您预期的那样工作,并且在我的机器上也可以-您是否尝试为您的模块使用名称
module
,或者只是一个示例?如果是这样,请尝试将其重命名为其他名称,因为“模块”是一个预定义的模块?它看起来没有收到这两个变量…您在此处发布的代码没有问题。可能是你的原始代码有问题。如果你们没有问题,也许你是对的,应用程序中还有另一个bug。谢谢你的提示和检查,我将更深入地了解。其他东西不需要返回测试函数
module.test()
将执行您打算执行的操作。也只需包括
module.exports.test=function(){}