React路由器截取到Express服务器的API调用

我使用React Router和Passport.js来设置Facebooklogin。 我已经设置了快速路线和护照configuration,但是每次我在客户端点击<a href="/api/auth/facebook">链接时,都会向RR提出请求,因为我的快速应用程序线:

 app.get('/*', function(req, res) { res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) }); 

当我调用服务器端路由时,它返回这个错误:

 Warning: [react-router] Location "/api/auth/facebook" did not match any routes 

我怎样才能绕过反应路由器这一个特定的路线?

我的user_routes.js文件如下所示:

 'user strict'; var bodyparser = require('body-parser'); var User = require('../models/User.js'); module.exports = function loadUserRoutes(router, passport) { router.use(bodyparser.json()); router.get('/auth/facebook', passport.authenticate('facebook', { session: false, successRedirect: '/chat', failureRedirect: '/' })); router.get('/auth/facebook/callback', passport.authenticate('facebook', { session: false, successRedirect: '/chat', failureRedirect: '/' })); router.post('/sign_up', passport.authenticate('local-signup', { session: false}), function(req, res) { res.json(req.user); }); router.post('/sign_in', passport.authenticate('local-login', { session: false}), function(req, res) { res.json(req.user); }); router.get('/signout', function(req, res) { req.logout(); res.end(); }); //get auth credentials from server router.get('/load_auth_into_state', function(req, res) { res.json(req.user); }); // get usernames for validating whether a username is available router.get('/all_usernames', function(req, res) { User.find({'local.username': { $exists: true } }, {'local.username': 1, _id:0}, function(err, data) { if(err) { console.log(err); return res.status(500).json({msg: 'internal server error'}); } res.json(data); }); }) }; 

在快递路线中,按照他们定义的顺序进行匹配。

所以在你的/*路由之前,你需要一些东西来处理API请求。

 app.get('/api/auth/facebook', passport.authenticate('facebook')) app.get('/*', function(req, res) { res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) });