React路由在facebook的create-react-app构建中不起作用
React routes are not working in facebook's create-react-app build
我使用react router来定义路由。我正在使用create-react-app进行开发。我的问题是,如果我在地址栏中键入子页面的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服务器可能是这样配置的,但是生产服务器(Apache?Nginx吗?还有别的吗?)不是。这个问题可能有帮助。
这样做的原因是,React用于构建单页面应用程序。你有一个单一的传统网页,它加载一些脚本——你的构建过程的输出最有可能,然后这些脚本照顾其他一切。这包括生成新的DOM,向"服务器"请求数据,甚至在视图更改时通过操纵URL伪造多页面应用程序行为。最后这一点是react-router做的。
然而,web服务器通常忽略了这些事情。他们知道如何提供url。当你请求yourdomain.com/时,他们会提供主页,但当你请求yourdomain.com/some/page/123时,他们不知道该提供什么,除非特别配置。一种配置是也返回这些其他url的主页的内容。React-router会获取URL并使用适当的组件,所以一切看起来都没问题
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- 唤醒程序插件的PhoneGap构建代码没有'不起作用
- Phonegap构建:通知/弹出在android中不起作用
- 构建Ajax调用数组时,JQueryAjax成功回调不起作用
- Dojo build 1.7 构建的软件包不起作用
- Twitter的TypeAhead在构建后不起作用
- Phonegap函数未在Phonegap构建应用程序中定义 - 推送通知也不起作用
- JQuery Ajax调用在构建后在Phonegap中不起作用
- 为什么我的引导开关在使用 foreach 构建的淘汰表中不起作用
- Javascript 递归循环到自动构建菜单结构不起作用
- 最亲密的,其次,兄弟姐妹赢了'不起作用.动态形状构建
- Phonegap构建不起作用
- 将构建数组的PHP代码转换为JS,现在的highcharts'不起作用——我做错了什么
- 用PHP构建的JavaScriptonClick函数在ajax响应中不起作用
- React路由在facebook的create-react-app构建中不起作用