Получение веб-пакета, чтобы игнорировать файл и просто потребовать оригинальный - PullRequest
0 голосов
/ 16 апреля 2020

Я переписал свой код на стороне сервера, чтобы использовать экспериментальный импорт ESM. Это означает, что __dirname больше не работает. Чтобы сделать эту библиотеку доступной для немодульного кода, я использовал webpack для переноса кода, который отбирает все операции импорта и связывает его вместе. Однако, чтобы обойти проблему __dirname, у меня есть файл cjs, который всегда загружается как обычный модуль js, который экспортирует только __dirname. Однако webpack также связывает этот файл и уничтожает значение __dirname (независимо от того, какую опцию вы передаете в конфигурации webpack).

Поэтому мой вопрос: Как мне убедить webpack просто потребовать этот единственный файл при объединении всего остального?

Внешний параметр работает только для модулей, которые не загружены по пути (например, require('anyModule')), но не require('./somefile.js')

PS: игнорировать плагин не работает. Это просто включает в себя ошибку в комплекте файл, говорящий, что файл не может быть найден

1 Ответ

0 голосов
/ 17 апреля 2020

Я получил его для работы с внешней опцией, передав функцию и отфильтровав это c имя файла и заменив его на правильный путь к файлу:

  externals: [ nodeModules, function (context, request, callback) {
    if (/dirname.cjs/.test(request)) {
      return callback(null, 'commonjs ./' + path.join('./', path.relative(__dirname, context), request).replace('\\', '/'))
    }
    callback()
  } ]

Я не уверен, если это жонглирование пути необходимо, но оно выполняет свою работу

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