Estoy usando React Router con Passport.js para configurar el inicio de sesión de Facebook. Configuré las rutas exprés y la configuración del pasaporte, pero cada vez que presiono el enlace <a href="/api/auth/facebook"> en mi lado del cliente, hace una solicitud a RR debido a mi aplicación exprés con este línea:
app.get('/*', function(req, res) { res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) });Como estoy haciendo una llamada a la ruta del lado del servidor, devuelve este error:
Warning: [react-router] Location "/api/auth/facebook" did not match any routes¿Cómo puedo omitir React Router para esta ruta en particular?
mi archivo user_routes.js se ve así:
'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); }); }) };En las rutas rápidas, las coincidencias se dan en el orden en que se definen.
Entonces, antes de su ruta /* , necesita algo para manejar las solicitudes de API.
app.get('/api/auth/facebook', passport.authenticate('facebook')) app.get('/*', function(req, res) { res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) });