2015-03-31 3 views
6

Я пытаюсь использовать webpack для связывания кода, который получает визуализацию на стороне сервера и на стороне клиента. Некоторые библиотеки, которые я пытаюсь использовать (например, glidejs), полностью предполагают, что они выполняются в браузере.Webpack: Игнорировать клиентские библиотеки на стороне сервера

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

Как я могу их требовать, но в основном просто они ничего не делают в среде узлов?

Glidejs специально хочет jquery, window и document. Предоставление jQuery кажется прекрасным, но я не знаю, что делать с окном и документом.

+1

Вы нашли хорошее решение для этого? –

ответ

1

Я не нашел красивое решение для этой проблемы тоже, но - по крайней мере - там являются два возможных решения:

  1. Вы можете связать свой Node.js код с WebPack указав node as target , Затем вы можете использовать псевдоним клиентского кода с пустыми заглушками.

  2. require() Пустые заглушки и их псевдонимы в конфигурации вашего веб-пакета для настоящих модулей.

+0

Я обошел эту проблему в своих приложениях, используя два разных файла ввода: один для node.js и один для браузера. Но это может быть невозможно в некоторых ситуациях (особенно с реакцией). –

+0

Я использую другую конфигурацию webpack с 'target: 'node'', но я не понимаю, как заглушить запрос. Вы просто поместите пустую строку для псевдонима, например 'alias: ['glidejs': '']'? – kjs3

+0

Создайте пустой модуль с комментарием, например 'excluded by webpack', и смените этот модуль на' 'glidejs''. –

Смежные вопросы