Node.js react路由器&x2B;用网页表达
我正在写博客。我有一个express服务器,它有各种api,如/api/getpost、/api/newpost等 我有我的react组件,我使用react路由器4,我的路由是/addpost/home等 在我的server.js中,我提供了我的静态文件(bundel.js) 然后Node.js react路由器&x2B;用网页表达,node.js,reactjs,express,react-router,Node.js,Reactjs,Express,React Router,我正在写博客。我有一个express服务器,它有各种api,如/api/getpost、/api/newpost等 我有我的react组件,我使用react路由器4,我的路由是/addpost/home等 在我的server.js中,我提供了我的静态文件(bundel.js) 然后 localhost:3000/正确加载主页 localhost:3000/home也会加载 localhost:3000/api/getpost失败 经过几个小时的搜索,我找不到这个问题的答案 编辑: 我正在添加更多
localhost:3000/
正确加载主页
localhost:3000/home
也会加载localhost:3000/api/getpost
失败
经过几个小时的搜索,我找不到这个问题的答案
编辑:
我正在添加更多细节
import { BrowserRouter as Router, Route,Redirect} from 'react-router-dom';
<Router>
<div>
<Route exact path="/" component ={App}>
<Route path="/home" component ={Home}>
</div>
</Router>
尝试将api路由移动到
app.get上方(*,…
路由。该路由正在捕获每个请求,因此当您点击localhost:3000/api/getpost
时,react路由器尝试加载与/api/getpost
匹配的组件,但失败,因为您没有也不想定义它。您的express文件应该正确排序:-
这是你可以尝试的
var express = require('express');
var mongoose = require('mongoose');
var router = require('./router');
var User = require('./app/components/data');
var path = require('path');
const app = express();
app.use(express.static(__dirname+'/dist'));
app.use('/api',router);
router.route('/getpost').get(function(req, res) {
User.find(function(err,user) {
if (err)
res.send(err);
res.json(user);
});
});
app.get('*', function(res,req){
res.sendFile(path.resolve(__dirname ,'/dist/index.html'));
});
你所说的“失败”是什么意思?它是如何失败的?它显示无法获取/api/getpost,并且在我的应用程序中,当我更改app.get('*',function(res,req){res.sendFile(path.resolve(uu dirname,'index.html');});to app.get('/',function(res req){res sendFile(path.resolve(u dirname,'index.html'));});我的api运行良好,但是路由到/home时无法获取/home哪个网络错误?您可以编辑您的答案并添加此类信息吗?我认为您在
server.js
中声明的路由顺序可能会导致问题。/api/getpost
将永远不会被击中,因为上面列出了一个catchall。
import { BrowserRouter as Router, Route,Redirect} from 'react-router-dom';
<Router>
<div>
<Route exact path="/" component ={App}>
<Route path="/home" component ={Home}>
</div>
</Router>
var express = require('express');
var mongoose = require('mongoose');
var router = require('./router');
var User = require('./app/components/data');
var path = require('path');
const app = express();
app.use(express.static(__dirname+'/dist'));
app.use('/api',router);
router.route('/getpost').get(function(req, res) {
User.find(function(err,user) {
if (err)
res.send(err);
res.json(user);
});
});
app.get('*', function(res,req){
res.sendFile(path.resolve(__dirname ,'/dist/index.html'));
});