Как мне вызвать экспортированные функции в NodeJS? Который может быть вложенным? - PullRequest
0 голосов
/ 27 августа 2018

Это моя функция внутри app.js, которую я экспортирую:

var app = {
  start: function() {
    //sample function
    exports.msgReceived = function() {
      return "Tomorrow 8pm near city hall";
    }
  }
}
module.exports = app;

У меня есть файл с именем messages.js, в котором я хочу вызвать функцию start, а также функцию msgReceived:

let subscriber = require('app');

it('server gets connected', function(done) {
  subscriber.start(); // working
  subscriber.msgReceived(); // not working
  done();
});

Как я могу это сделать?

Потому что с ключевым словом var я могу получить доступ только к функции start. Мой редактор кода IntelliSense не указывает на функцию msgReceived.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Может быть, это может помочь:

var app = {
  start: function() {
    //sample function
    let msgReceived = function() {
      return "Tomorrow 8pm near city hall";
    };
    return {msgReceived: msgReceived};
  }
}
module.exports = app;

.

let subscriber = require('app');

it('server gets connected', function(done) {
  let start = subscriber.start(); // working
  let msg = start.msgReceived(); // should work
  done();
});
0 голосов
/ 27 августа 2018

Вы можете сделать что-то подобное, что устанавливает новую функцию для объекта приложения после запуска start().

var app = {
  start: function() {
    //sample function
    this.msgReceived = function() { // `this` refers to `app`
      return "Tomorrow 8pm near city hall";
    }
  }
}
module.exports = app;

Если вы хотите, чтобы intellisense работал, вам, вероятно, придется включить

var app = {
  start : ...,
  msgReceived: null // or undefined... or anything.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...