Сервер Express не работает в моей сборке React - PullRequest
0 голосов
/ 15 октября 2018

У меня есть приложение React, созданное с помощью create-реакции-приложения, которое я пытаюсь запустить на экспресс-сервере.Он работает нормально при работе npm start, но при работе npm run build, а затем serve -g build я могу подключиться только к порту 5000 на локальном хосте, а не к 8080, который я настроил на сервере экспресс.

server.js

const express = require('express');
const jsonServer = require('json-server')
const path = require('path');
const app = express();
app.use(express.static(path.join(__dirname, 'build')));

app.get('/ping', function (req, res) {
 return res.send('pong');
});

app.get('/', function (req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.get('/remote', function (req, res) {
  res.sendFile(path.join(__dirname, 'build', 'index.html'));
});

app.use('/api', jsonServer.router('./src/config.json'));

app.listen(process.env.PORT || 8080);

Я также настроил свой прокси и основной

package.json

"main": "server.js",
"proxy": "http://localhost:8080",

Как я могу сделать эту работу?

1 Ответ

0 голосов
/ 15 октября 2018

Как вы правильно сказали, директива proxy хорошо работает в режиме разработки, с npm start.

Также, как вы правильно сказали, команда serve -g build правильно обслуживает вашу производственную сборку в localhost: 5000.

Для вашей основной цели, то есть для обслуживания вашей производственной сборки на вашем экспресс-сервере, вам необходимо сгенерировать производственную сборку с:

npm run build

и затем передать ее в один из вашихКонечные точки сервера, как показано ниже:

app.use(express.static(path.join(__dirname,'/build')));
app.get('/', function (req, res, next) {
    res.sendFile(path.resolve('build/index.html'));
});

И не забудьте запустить сервер с

node server.js

Надеюсь, это поможет!

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