Какой правильный способ обслуживать производство реагирует bundle.js, созданный webpack?
У меня есть приложение с простыми маршрутами. Он отлично работает, когда я использую сервер разработки webpack. Теперь я хочу развернуть его на моем рабочем сервере. Поэтому я создал bundle.js. Однако я не уверен, какой правильный способ обслуживать файл на сервере.
Большинство сообщений в блогах останавливаются при строительстве bundle.js или разворачивают его на герою или узле. Что делать, если я хочу обслуживать его на моем собственном сервере?
Я попробовал использовать файл на экспресс-сервере, но я получаю эту ошибку в браузере (этот же маршрут отлично работает с webpack-dev-сервером).
http://localhost:3000/app
Невозможно GET/app
У меня такой простой маршрут. Целевая страница в/отлично работает, но я не могу получить доступ/маршрут приложения
var Routes = () => (
<Router history={browserHistory}>
<Route path="/" component={Landing}>
</Route>
<Route path="/app" component={App}>
</Route>
</Router>
)
Вот мой server.js. Я помещаю bundle.js, index.html в. /public
app.use(express.static('./public'));
app.listen(port, function () {
console.log('Server running on port ' + port);
});
Ответы
Ответ 1
Вам необходимо объявить маршрут "поймать все" на вашем экспресс-сервере, который захватывает все запросы на страницы и направляет их клиенту. Во-первых, убедитесь, что вы включили модуль path
на свой сервер:
var path = require('path');
Затем поставьте это перед app.listen
:
app.get('*', function(req, res) {
res.sendFile(path.resolve(__dirname, 'public/index.html'));
});
Предполагается, что вы вставляете bundle.js
в index.html
с помощью тега script.