Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js react路由器&x2B;用网页表达_Node.js_Reactjs_Express_React Router - Fatal编程技术网

Node.js react路由器&x2B;用网页表达

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失败 经过几个小时的搜索,我找不到这个问题的答案 编辑: 我正在添加更多

我正在写博客。我有一个express服务器,它有各种api,如/api/getpost、/api/newpost等

我有我的react组件,我使用react路由器4,我的路由是/addpost/home等

在我的server.js中,我提供了我的静态文件(bundel.js)

然后

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'));
});