返回信息流现在我是这么做的:React 是通过 create-react-app 生成的,build 出来的文件放到 node public 下面,然后在 node 里设置 app.use(express.static('public')),这样能访问 /build。但是如果我想访问 /build/foo,这样就会显示 cannot get。这种情况应该怎么办呢
这是一条镜像帖。来源:北邮人论坛 / www-technology / #40697同步于 2018/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
React 怎么和 Express 一起用啊????
splendidone
2018/3/19镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
自己看看express的路由怎么设置的吧。。
你这是对路由没什么概念啊。。
举个栗子,你可以这样:
```
app.use("/build/foo",function(req,res){
console.log("关于");
res.send("wroted by leftfist");
});
```
express 后台我已经写完了。在 react 调试过程中,react 占用 3000 端口,node 占 8000 端口,访问 :3000/a/b/c 这种都是可以的
【 在 cocoyimasa 的大作中提到: 】
: 自己看看express的路由怎么设置的吧。。
: 你这是对路由没什么概念啊。。
: 举个栗子,你可以这样:
: ...................
如果是 template 那种,一个路由就返回一个 html 带一些数据就可以渲染了,但是 react build 之后只有一个 index.html,怎么渲染呢
【 在 cocoyimasa 的大作中提到: 】
: 自己看看express的路由怎么设置的吧。。
: 你这是对路由没什么概念啊。。
: 举个栗子,你可以这样:
: ...................
react-router
【 在 splendidone 的大作中提到: 】
: 如果是 template 那种,一个路由就返回一个 html 带一些数据就可以渲染了,但是 react build 之后只有一个 index.html,怎么渲染呢
我是vue的技术栈,虽然不懂react不过都是SPA页面的话流程都是一样的。
因为是前端路由,所以诸如`/a/b`这类深层次的路由,如果express后端不配置转发回前端,交由前端路由的话,就会默认走express的后端路由。那么自然是404。解决办法是在你的static路由之前加一个history-fallback的中间件。
项目地址可以参考:https://github.com/bripkens/connect-history-api-fallback
PS:话说react官方文档没有讲生产发布的事项么。。。vue-router的文档讲得挺清楚的。。
你既然写前端不需要express 尽管create-react-app的npm dependencies里会借用node的http server用来作为开发服务器 你需要的只是一个router
react里一般使用react-router 楼上提到的history-fallback(忘了在react里叫什么了 反正其实都是路由里的浏览器/app后退功能)从react-router^4.0以后被移除了 所以网上很多人会使用react-router^3.0.1
建议你去找找网上教程跟着做 自己这样摸索很累的
我用的是4.0之后版本的react-router,竟然是这种情况...我要研究一下
【 在 rp2011211472 的大作中提到: 】
: 你既然写前端不需要express 尽管create-react-app的npm dependencies里会借用node的http server用来作为开发服务器 你需要的只是一个router
: react里一般使用react-router 楼上提到的history-fallback(忘了在react里叫什么了 反正其实都是路由里的浏览器/app后退功能)从react-router^4.0以后被移除了 所以网上很多人会使用react-router^3.0.1
: 建议你去找找网上教程跟着做 自己这样摸索很累的
app.get('*', function (request, response){
response.sendFile(path.resolve(__dirname, 'public', 'index.html'))
})