У меня есть серверный сервер Node API Express и приложение React в двух отдельных папках (одна для серверной части, одна для приложения React). Мой бэкэнд работает на localhost:8000
, и в моем приложении React у меня есть прокси к этой цели через файл setupProxy.js
с использованием http-proxy-middleware
. Когда я запускаю приложение реагирования локально на localhost:3000
, оно может правильно отправлять запросы на мой бэкэнд.
Однако, когда я запускаю yarn build
в своем приложении React для производства, оно, похоже, не работает. В репозитории приложения React я установил Express для обслуживания статических файлов на localhost:9000
. Когда я пытаюсь позвонить бэкэнду, он просто возвращает index.html
папки сборки. Мне интересно, делаю ли я что-то не так или я что-то упускаю. Я хотел бы, чтобы:
- Когда пользователь переходит на
localhost:9000
, он показывает index.html
папки build
. - Когда пользователь нажимает кнопку, онследует отправить запрос в
localhost:8000
, а не отправлять обратно index.html
.
Вот некоторые файлы на случай, если это необходимо:
src/setupProxy.js
(это включеноприложение React)
const proxy = require('http-proxy-middleware');
module.exports = function(app) {
app.use(proxy('/auth/google', { target: 'http://localhost:8000/' }));
app.use(proxy('/api/**', { target: 'http://localhost:8000/' }));
};
server.js
(также в приложении React для обслуживания папки сборки)
const express = require('express');
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));
app.get('/*', (req, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(9000, () => {
console.log('Listening on port 9000.');
});