Как я могу установить путь webpack publi c для каждого запроса к серверу? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть конфигурация webpack для клиента и сервера, сервер может получить доступ к связанному коду, так что я могу позвонить react.renderToString(<App>) для создания содержимого, отображаемого на стороне сервера (а затем содержимое становится гидратированным на стороне клиента).

Сервер смонтирован в подпуть, поэтому, чтобы использовать его локально, вы посетите http://localhost:8080/some/path.

Все работает без нареканий, кроме путей к ресурсам! Допустим, <App> создает изображение, например <img src="/static/logo.svg"/> (то есть App.tsx импортирует ./logo.svg и использует его в теге изображения), поскольку сервер монтируется в подпуть, URL-адрес HTML для lo go .svg должен иметь префикс базового пути. Таким образом, реальный окончательный sr c должен быть /some/path/static/logo.svg.

. Я могу сделать эту работу на клиенте, установив __webpack_public_path__ перед другим импортом, и это отлично работает! Но как я могу использовать это на сервере? Я знаю только, где он монтируется для каждого запроса, и __webpack_public_path__ можно установить только во время импорта (насколько я могу судить), так что мне кажется, что я костей. Конечно, если я изменю __webpack_public_path__ после запуска, новое значение не будет использовано.

Есть ли какие-либо решения? Я счастлив включить любые фрагменты кода, чтобы прояснить любой контекст. В настоящее время запрос поступает на сервер через заголовок запроса, и я подумал, что было бы просто «просто» использовать его для префикса ресурсов.

Для справки, сервер - это сервер Express, а SVG-файл загружается через стандартный загрузчик файлов. Рад обновить мой Q с дополнительной информацией или кодом. Я часами бился с этим, поэтому любая помощь, понимание, мысли или догадки очень ценились (я все еще довольно новичок в вебпаке и др.).

1 Ответ

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

Мне нравятся глупые планы. Хороший глупый план, который нужно выполнить сейчас, лучше, чем бесконечный поиск умного.

Итак, вот мой глупый план. Имейте в виду, что это настоящий шутник:

Только на сервере я устанавливаю __webpack_public_path__ на произвольное значение часового, я отображаю вывод HTML, а затем Я ищу и заменяю значение стража , меняя местами мой действительный путь публикации c.

Я не собираюсь утверждать, что это элегантно, но то, что я могу сказать: это работает.

...