Javascript 将变量传递到节点需要设置吗?

Javascript 将变量传递到节点需要设置吗?,javascript,node.js,module,node-modules,Javascript,Node.js,Module,Node Modules,在我的nodeJS应用程序中,我试图构建一个连接到我的外部服务的助手库 我想去 const client = require('./myService')(serviceKey); 在应用程序中,我希望能够调用多个函数,例如: var healthcheckState = client.healthcheck(); var functionOneBool = client.someFunction('variable0','variable1'); 我发现了一

在我的nodeJS应用程序中,我试图构建一个连接到我的外部服务的助手库

我想去


    const client = require('./myService')(serviceKey);

在应用程序中,我希望能够调用多个函数,例如:


    var healthcheckState = client.healthcheck();
    var functionOneBool = client.someFunction('variable0','variable1');

我发现了一些关于如何做到这一点的帖子;

但我不知道如何适应它们

这是myService.js


    module.exports = function(serviceKey) {
        var modules = {};
        modules.healthcheck = {
            function(){
                console.log('I have a heartbeat!');
            }
        };
        return modules;
      };

当我尝试跑步时:


    const client = require('./myService')('abc123');
    client.healthcheck();

我告诉过你client.healthcheck不是一个函数


我哪里出错了?

为此场景设置单元测试不是一个理想的测试。在您的服务上放置setter函数怎么样

let client = require('./myService');
client.setServiceKey('abc123');
// or
client.setServiceKey(process.env.SERVICE_KEY);

let myReturnValue = client.myDifferenctCalls();
然后您可以设置一个nice、tokenValid或tokenNotValid单元测试来进行测试


下一步,仔细想想。您的require方法返回一个值,在您的示例中,它将模块作为myService.js中的对象返回,您还设置了一个“healthcheck”属性,您将其定义为对象。到目前为止,我们看到您将“modules”作为对象返回,而prop module.healthcheck作为对象。因此,modules.healthcheck作为对象不是[[callable]],因此不是函数。至少,到目前为止,您应该将module.healthcheck重新定义为函数表达式,而不是对象。因此,我已经给出了书面答案,但您需要对其进行编码。

您的代码中存在语法错误。 您正在创建一个模块对象,而在模块对象中,您正在创建一个没有任何键的对象,并作为值使用

基本上你是在做:obj={healthcheck:{func};您需要它不是obj={healthcheck:func}


让我们大声想一想。1.require方法返回一个值,在您的示例中是它的返回模块,您在myService.js中将其设置为一个对象,您还设置了一个“healthcheck”属性,您将其定义为一个对象。到目前为止,我们看到您将“modules”作为对象返回,而module.healthcheck作为对象。所以你是modules.healthcheck作为一个对象是不可调用的,因此它不是一个函数。至少,到目前为止,您应该将module.healthcheck重新定义为函数表达式而不是对象。
module.exports = function(serviceKey) {
    const modules = {};
    modules.healthcheck = function(){
            console.log('I have a heartbeat!');
        }
    return modules;
};