Передать переменную в NodeJS требуется настройка?

В моем приложении nodeJS я пытаюсь создать вспомогательную библиотеку, которая подключается к моей внешней службе.

Я хочу добраться до


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

в приложении, которое я хочу иметь возможность вызывать несколько функций, например:


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

Я нашел несколько сообщений SO о как это сделать; Как передать переменные в модули NodeJS? Как передать переменную при использовании `require` в node.js?

Но я не мог понять, как адаптировать их.

Это 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 не является функцией

Где я ошибся?

0
задан Mathew Jenkinson 26 June 2019 в 21:19
поделиться

2 ответа

В вашем коде есть синтаксическая ошибка. Вы создаете объект modules, а в модуле Object вы создаете объект без ключа, а function в качестве значения.

В основном вы делаете: obj = { healthcheck: { func } }; Вам это нужно не будет obj = { healthcheck: func }

module.exports = function(serviceKey) {
    const modules = {};
    modules.healthcheck = function(){
            console.log('I have a heartbeat!');
        }
    return modules;
};
1
ответ дан Aritra Chakraborty 26 June 2019 в 21:19
поделиться

Настройка модульного теста для этого сценария не будет идеальным тестом. Как насчет размещения функции setter в вашем сервисе?

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

let myReturnValue = client.myDifferenctCalls();

Затем вы можете настроить хороший, tokenValid или tokenNotValid модульный тест, чтобы выполнить его.

Затем подумайте: 1. Ваш метод require возвращает значение, в вашем случае его возвращающие модули являются объектом в вашем myService.js. Вы также устанавливаете свойство 'healthcheck', которое вы определяете как объект . Итак, мы видим, что вы возвращаете: 'modules' как объект, а prop module.healthcheck как объект. Таким образом, ваш module.healthcheck как объект не является [[callable]] и, следовательно, не является функцией. Как минимум, пока вы должны переопределить module.healthcheck как выражение функции вместо объекта. Поэтому я дал ответ в письменном виде, но вам нужно его кодировать.

0
ответ дан Jason Ashley 26 June 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: