Фон
Я пишу приложение реагирования на 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
.)
если у кого-то есть другие способы замены модуля во время компиляции, пожалуйста, дайте мне знать, очень признателен.