Как использовать babel для динамического переноса пакета, потребляемого из node_modules, при работе в узле? - PullRequest
2 голосов
/ 12 июля 2019

Я пишу приложение NodeJS, назовем его App.

Приложение использует опубликованный модуль из другой команды, которую мы назовем Model.

Model использует опубликованный модульназывается Фу.Foo публикуется как модуль ES6.

Когда приложение пытается запустить в Node, происходит сбой с сообщением «SyntaxError: Неожиданный экспорт токена», поскольку Foo публикуется как модуль ES6, а Node не поддерживает модули ES6 (без включения некоторых экспериментальных функций), насколько я понимаю.

Я знаю, что есть плагин babel для преобразования ES6 в модули CommonJS, но я не уверен, что это правильно /лучший способ использовать его в этой ситуации.Имейте в виду, что МОЕ "Приложение" напрямую не использует Foo, оно используется только косвенно, потому что Приложение использует Модель, которая использует Foo.

  • Есть ли способ сообщить Node, что всякий раз, когда он пытается загрузитьМодуль Foo, он должен сначала запустить его через babel, во время выполнения?Это возможно?Кажется, что это было бы наименее инвазивным решением.
  • Я знаю, что могу статически переносить JS Foo как часть построения App, но если я не перенесу его в точно такое же место в node_modules, код в Model, который ссылаетсяFoo не будет знать, где его найти, и изменение содержимого node_modules кажется неправильным.
  • Должен ли издатель Model переносить / переиздавать Foo как модуль CommonJS в рамках публикации самой Model?

Я не знаю, какой из них возможен или какая-то из них хорошая идея.Есть ли прецедент / лучшие практики для этого типа проблемы?

Спасибо!

...