React Router通过URL导航失效:Cannot GET /'page'问题求助
React Router 直接URL导航出现Cannot GET /page 问题解决方法
直接通过URL访问React Router路由出现404,但内部导航正常,核心原因是单页应用的前端路由依赖浏览器端处理,当直接请求服务器时,服务器无法识别这些前端路由路径,返回404。
你之前添加的通配路由逻辑方向是对的,但路径写错了——React打包后的index.html在build目录下,不是public目录。另外要注意中间件的顺序:静态资源处理要放在通配路由之前,确保js、css等静态文件能正常加载。
修正后的server.js代码:
const express = require('express'); const app = express(); const port = process.env.PORT || 3001; const path = require('path'); // 先处理build目录下的静态资源 app.use(express.static('build')); // 所有未匹配到静态资源的请求,都返回build下的index.html,交给React Router处理 app.get('/*', function(req, res) { res.sendFile(path.join(__dirname, 'build', 'index.html'), function(err) { if (err) { res.status(500).send(err) } }) }) app.listen(port, () => { console.log('Server is up on port: ' + port); })
修改要点:
- 将
sendFile的路径从./public/index.html改为build/index.html,对应打包后的文件位置 - 确保
express.static('build')在通配路由之前执行,优先处理静态资源请求
内容的提问来源于stack exchange,提问作者jakubbaginski
相关产品推荐
相关产品推荐

