Реэкспорт из нескольких модулей в ES5 - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть индекс. js со следующим кодом, который отлично работает на клиенте, реэкспортируя функции, определенные в трех других модулях:

export * from './validators';
export * from './comparators';
export * from './transforms';

Но я хочу использовать их в NodeJS , Наша текущая версия, по крайней мере, кажется, не знает этот синтаксис ES6. Я знаю, в модулях, где определены функции, как экспортировать их, используя

module.exports = {
    func1,
    func2
}

Но каков соответствующий синтаксис для использования в модуле реэкспорта?

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Простое, но эффективное решение будет

Object.assign(module.exports,
    require('./validators'),
    require('./comparators'),
    require('./transforms'),
);

Это похоже на то, что делает ES6, но не поддерживает обновление экспортированных элементов. Для более близкого приближения вам нужно использовать геттеры или прокси.

Конечно, есть хорошая альтернатива: просто напишите синтаксис ES6 и используйте транспортер, который знает, как правильно перевести его в ES5!

0 голосов
/ 11 февраля 2020

Благодаря @Bergi это решение сработало. Я также только что разработал следующий почти эквивалентный вариант, но моя версия имеет больше печатания:

const validators = require('./validators');
const comparators = require('./comparators');
const transforms = require('./transforms');

module.exports = {
    ...validators,
    ...comparators,
    ...transforms
};
...