Создайте производственную сборку приложения React, не слушая бэкэнд API - PullRequest
0 голосов
/ 22 октября 2019

У меня есть серверный сервер Node API Express и приложение React в двух отдельных папках (одна для серверной части, одна для приложения React). Мой бэкэнд работает на localhost:8000, и в моем приложении React у меня есть прокси к этой цели через файл setupProxy.js с использованием http-proxy-middleware. Когда я запускаю приложение реагирования локально на localhost:3000, оно может правильно отправлять запросы на мой бэкэнд.

Однако, когда я запускаю yarn build в своем приложении React для производства, оно, похоже, не работает. В репозитории приложения React я установил Express для обслуживания статических файлов на localhost:9000. Когда я пытаюсь позвонить бэкэнду, он просто возвращает index.html папки сборки. Мне интересно, делаю ли я что-то не так или я что-то упускаю. Я хотел бы, чтобы:

  1. Когда пользователь переходит на localhost:9000, он показывает index.html папки build.
  2. Когда пользователь нажимает кнопку, онследует отправить запрос в 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.');
});

1 Ответ

0 голосов
/ 22 октября 2019

Добавили ли вы зависимость cors в API вашего узла. Это необходимо, когда мы общаемся с другим типом среды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...