我有一个用create-react-app制作的React应用程序,我试图在Express服务器上运行。在运行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",
我该如何做?
答案 0 :(得分:1)
正如您正确地说的那样,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
希望有帮助!