Псевдоним Webpack не работает, когда целевой модуль находится в node_modules - PullRequest
0 голосов
/ 06 сентября 2018

Фон

Я пишу приложение реагирования на SSR с машинописью, есть клиентский модуль, который я должен использовать (client-logger), и его можно запускать только на стороне клиента, поскольку это модульная система AMD. работа на узле выдаст ошибки.

Мое текущее решение заключается в замене модуля client-logger на модуль rewrite-client-logger ТОЛЬКО во время компиляции для комплекта сервера.

Я попробовал NormalModuleReplacementPlugin и alias Webpack, даже написать свой собственный загрузчик, ни один из них не работает, это мой Конфигурация Webpack для псевдонима.

Это демонстрационная ссылка для воспроизведения: https://github.com/stanleyyylau/demo

Репро шаги:

  • Git clone и оформление заказа в мастер ветке
  • npm install для установки всех зависимостей
  • копировать client-logger в node_modules с cp -rf ./client-logger ./node_modules
  • npm run build для запуска сборки
  • npm run start для запуска универсального приложения

Ожидаемый результат:

  • Сервер должен работать без ошибок
  • Серверный комплект client-logger должен быть заменен на rewrite-client-logger (Вы можете проверить это, выполнив поиск строки register event в assets/server.js файле.)

Фактический результат:

  • Узел выдает ошибку времени выполнения ReferenceError: define is not defined
  • client-logger не заменяется на rewrite-client-logger (замена псевдонима работает только тогда, когда client-logger отсутствует в папке node_modules.)

    если у кого-то есть другие способы замены модуля во время компиляции, пожалуйста, дайте мне знать, очень признателен.

1 Ответ

0 голосов
/ 09 сентября 2018

Вы можете решить эту проблему, изменив конфигурацию webpack-node-externals , чтобы включить регистратор. Таким образом, у правила псевдонима есть шанс сработать. Попробуйте

externals: [nodeExternals({
    whitelist: ['client-logger']
})]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...