Как мне требовать внешние модули commonjs во время выполнения из комплекта, который был создан веб-пакетом - PullRequest
0 голосов
/ 11 июля 2019

В клиентском проекте есть система плагинов.Это работает следующим образом: файлы JS находятся в определенном каталоге.Допустим, /plugins.

Эти плагины экспортируют функцию с общей подписью.

Теперь я связываю оставшуюся часть кода с веб-пакетом.Я хочу динамически загружать эти модули через require(someVar).

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

Я попытался создать некоторые внешние компонентывот так безуспешно:

externals: [
  (_context, request, callback) =>
    /^\/plugins\/.*$/.test(request)
      ? callback(null, `commonjs ${request}`)
      : callback(),
],

Во время выполнения выдает такую ​​ошибку:

Error: Cannot find module '/plugins/file.js'
    at webpackEmptyContext (filex.js:line:col)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at Socket.Readable.push (_stream_readable.js:208:10)
    at Pipe.onread (net.js:594:20)

Как я могу не связывать эти файлы и требовать их во время выполнения из файловой системы?Это возможно даже с веб-пакетом?

1 Ответ

0 голосов
/ 17 июля 2019

Хорошо, я нашел решение:

const dynamicRequire =
  typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;

Это работает с webpack и ts-node (я использую ts-node во время разработки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...