Какой правильный способ обслуживать производство реагирует 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.