Express React路由器和中间件

时间:2018-09-19 05:54:05

标签: reactjs express react-router-dom

我有一个使用Express和React的服务器/网站。我想使用app.use(express.static())来服务网站。除了干扰单个服务器处理的URL /parse-dashboard(用作单独的中间件)之外,这是我想要的工作方式。

const path = require( 'path' )
var express = require('express');
var bodyParser = require('body-parser');
var basicAuth = require('express-basic-auth');
var ParseServer = require('parse-server').ParseServer;
var ParseDashboard = require('parse-dashboard');
var url = require('url');

var app = express();

var config = require( path.join( __dirname, 'config' ) )
app.use('/parse-dashboard', ParseDashboard(config.dashboard, true));

// Middleware for reading request body
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.use(express.static(path.join(__dirname, './client/build')));

app.set( 'port', process.env.PORT || 3000 )

const server = require( 'http' ).createServer( app )
server.listen( app.get( 'port' ), () => {
  console.log('express server listening on port ' + ( process.env.PORT || server.address().port ));
});

当我转到/parse-dashboard时,React应用程序(正在使用react-router-dom)使用该URL并显示空白路由。我该如何由服务器显示此路由?

1 个答案:

答案 0 :(得分:0)

我弄清楚了,男孩,我感觉很蠢。在我的server(Express)文件夹中包含的React app文件夹中,我有一个package.json文件来声明React依赖项。 package.json文件中仍然包含proxy键,一些指南已经提到使用该键,以便在本地工作时获得对自己服务器的api调用。删除该键后,所有功能均按预期工作,/parse-dashboard由express处理,其余由react-router-dom

处理