Если Express выступает в качестве вашего API и сервера приложений, на базовом уровне вам необходимо настроить Express для загрузки index.html
приложения React, когда другие маршруты API не обнаружены. Вы могли бы сделать это, используя sendFile()
вместе с path
узла, регистрируя "универсальный" маршрут после всех других ваших конечных точек API, в основном файле для вашего приложения Express.
app.use('/users', usersRouter);
app.use('*', function (request, response) {
response.sendFile(path.resolve(__dirname, 'index.html'));
});
Путь в sendFile()
должен указывать на местоположение index.html
приложения React-клиента / внешнего интерфейса. Что именно входит в sendFile()
, полностью зависит от структуры вашего проекта. Если, например, у вас есть приложение React в папке с именем client
, в которой есть папка build
, сгенерированная create-Reaction-app npm run build
, sendFile()
будет выглядеть следующим образом:
app.use(express.static(path.join(__dirname, 'client', 'build')));
// API route
app.use('/users', usersRouter);
app.use('*', function (request, response) {
response.sendFile(path.join(__dirname, 'client', 'build', 'index.html'));
});
*
в app.use()
, например app.use('*', function (request, response));
, фактически означает все HTTP-глаголы (GET, POST, PUT и т. Д.). Если вы НЕ введете это после ваших маршрутов / путей API, это будет препятствовать тому, чтобы ваше клиентское приложение React выполняло вызовы API, так как оно будет перехватывать все запросы, порядок очень важен.
Затем вы просто создаете приложение React, а затем запускаете приложение Express.
Надеюсь, это поможет!