Javascript React路由在facebook的create React应用程序构建中不起作用

Javascript React路由在facebook的create React应用程序构建中不起作用,javascript,reactjs,react-router,react-router-redux,create-react-app,Javascript,Reactjs,React Router,React Router Redux,Create React App,我正在使用react路由器定义路由。我正在利用它进行开发。我的问题是,如果我在地址栏中键入子页面的url,并尝试访问它,它在开发构建中工作,但在生产构建中不工作 我使用一个简单的express服务器来托管生产构建 var express = require('express'), app = express(), http = require('http'), httpServer = http.Server(app); app.use(express.static(__dirna

我正在使用react路由器定义路由。我正在利用它进行开发。我的问题是,如果我在地址栏中键入子页面的url,并尝试访问它,它在开发构建中工作,但在生产构建中不工作

我使用一个简单的express服务器来托管生产构建

var express = require('express'),
  app = express(),
  http = require('http'),
  httpServer = http.Server(app);

app.use(express.static(__dirname + '/build'));

app.get('/', function(req, res) {
  res.sendfile(__dirname + '/index.html');
});
app.listen(3001);

您必须将Web服务器配置为为为您定义的所有路由提供相同的页面,或者在React中实现服务器端呈现。开发Web服务器可能是这样配置的,但生产Web服务器是Apache?Nginx?还有别的吗?不是。也许会有帮助

这是因为React用于构建单页应用程序。您只有一个传统的网页,其中加载了一些脚本——最有可能是构建过程的输出,然后这些脚本会处理其他所有事情。这包括生成新的DOM,向服务器请求数据,甚至在视图更改时通过操纵URL来伪造多页应用程序行为。这最后一点就是react路由器所做的


然而,web服务器通常不会注意到这些事情。他们知道如何提供URL。当您请求yourdomain.com/时,他们将提供该主页,但当您请求yourdomain.com/some/page/123时,他们将不知道提供什么,除非经过特殊配置。一种配置是还返回这些其他URL的主页内容。React路由器将拾取URL并使用适当的组件,因此一切看起来都正常>

您必须将Web服务器配置为为为您定义的所有路由提供相同的页面,或者在React中实现服务器端呈现。开发Web服务器可能是这样配置的,但生产Web服务器是Apache?Nginx?还有别的吗?不是。也许会有帮助

这是因为React用于构建单页应用程序。您只有一个传统的网页,其中加载了一些脚本——最有可能是构建过程的输出,然后这些脚本会处理其他所有事情。这包括生成新的DOM,向服务器请求数据,甚至在视图更改时通过操纵URL来伪造多页应用程序行为。这最后一点就是react路由器所做的


然而,web服务器通常不会注意到这些事情。他们知道如何提供URL。当您请求yourdomain.com/时,他们将提供该主页,但当您请求yourdomain.com/some/page/123时,他们将不知道提供什么,除非经过特殊配置。一种配置是还返回这些其他URL的主页内容。React路由器将选择URL并使用适当的组件,因此一切看起来都正常>

哪个URL?主页面-yourdomain.com/或子页面-yourdomain.com/some/page/123?@HoriaComan子页面哪个URL?主页面-yourdomain.com/或子页面-yourdomain.com/some/page/123?@HoriaComan子页面更具体地说,作者希望在服务index.html的处理程序中更改/to/*更具体地说,作者希望在服务index.html的处理程序中更改/to/*。