Экспорт функций в Node.js отображается как свойства в VSCode - PullRequest
0 голосов
/ 24 октября 2019

Технически это не является ошибкой, поэтому я не выдал ошибку на GitHub, но похоже, что должно быть лучшее поведение (или, возможно, лучший способ определить экспорт).

СкажитеУ меня есть:

function one() {
    // do stuff
}

function two() {
    one()
}

module.exports = {one, two};

В другом файле, когда мне требуется этот модуль, оба one и two отображаются как свойства объекта (синие значки). VSCode, кажется, не признает, что они на самом деле являются функциями. Это то же самое поведение, если вы определяете именованные анонимные функции, такие как module.exports = {one: function () {}};, что имеет смысл при такой записи. Но если я просто хочу, чтобы функция отображалась как функция в экспорте, я могу заставить ее работать только так:

module.exports = {
   one() { /* do stuff */ },
   two() { /* do more stuff */},
};

В некоторых случаях это работает, но если two необходимовызовите one, и обе функции необходимо экспортировать, вы должны использовать this. для доступа к другим элементам.

Как определить группу функций в модуле, которые могут использовать друг друга, а также экспортировать их всечтобы они отображались в виде функций (фиолетовый значок) в других модулях в VSCode?

EDIT

Проблема заключается в том, чтобы заставить VSCode распознавать и подсказывать функции как таковые при запросе их от других модулей,вместо того, чтобы они отображались как «свойства» модуля.

1 Ответ

0 голосов
/ 25 октября 2019

Этот подход может позволить вам экспортировать ваши функции и вызывать ваши локальные функции:

let self = {
  one: function() {
    return 'one';
  },
  two: function() {
    return self.one();
  }
};
module.exports = self;

С другой стороны, если ваш синий значок все еще не отображается, вы можете назвать свои функции:

let self = {
  one: function SayOne() {
    return 'one';
  },
  two: function CallOne() {
    return self.one();
  }
};
module.exports = self;

Наконец, вы можете импортировать свои функции следующим образом:

const { one, two } = require('./your_file');
console.log(two());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...