-1
votes

Réagir / nœudjs: les URL sur le front-end et le back-end ne correspondent pas, ce qui provoque une erreur

Je souhaite créer une page de profil public dans ma demande, mais chaque fois que je frappe un itinéraire, une erreur apparaît dans la console. Je ne comprends pas quel problème est, pourriez-vous le regarder avec vos yeux frais. Permettez-moi de vous donner plus d'informations sur mon problème.

Route publique - Back-end strong> P>

<Route exact path="/leaders/:id" component={PublicProfile} />


6 commentaires

Quel est le port que votre serveur Nodejs est en cours d'exécution, car 3000 celui que vous appelez est le port par défaut de réagir n'est pas votre port backend.


Tous les autres itinéraires fonctionnent bien. Je suppose donc que le problème n'est pas avec des ports.


Si d'autres itinéraires fonctionnent bien, alors que l'interdiction de votre identifiant est indéfinie et que vous envoyez 404, voir la section Catch de votre backend.


Quel leader est ici, .get (API / Profil / User / $ {id}) , et vous frappez / LEADER / API / Profil / Utilisateur /


Il n'y a pas de console.log (ID) vu sur la console, ID ne peut pas être défini sur des données spécifiques.


Oui, je ne comprends pas comment leader est arrivé car il devrait être juste '/ API / Profil / Utilisateur /: Id'. Je n'ai rien spécifié de ce genre dans mon code.


3 Réponses :


1
votes

Vous confondez votre extrémité avant URL avec Backend URL HTTP reposante , Vous devez démarrer différents deux ports pour une application de réaction et de nœud, Vous mélangez la logique de réacteur-route avec la logique Node-Express, Quand localhost: 3000 est debout pour réagir,
Vous devez choisir un numéro de port différent pour l'application Backend, Gardez le serveur d'écouter sur ce port, Ensuite, faites req à cette URL et communiquez vos données. Vous devez configurer votre application correctement.
par exemple.
localhost: 3000 / leaders / leader / 2 pour votre extrémité avant, faire une demande de serveur comme, Localhost: 8000 / API / Profil / Utilisateur / 2 Où 2 est $ {id} pour le code Backend.


0 commentaires


0
votes

J'ai résolu le problème, j'aurais dû utiliser la méthode FindbyId code> et les paramètres auraient dû être req.params.id code>. Donc, un code valide ressemble à ceci.

// @route  POST api/profile/user/:user_id
// @desc   Get profile by user ID
// @access Public

router.get('/user/:id', (req, res) => {
  const errors = {};
  Profile.findById(req.params.id)
    .populate('user', ['name', 'email', 'avatar'])
    .then(profile => {
      if (!profile) {
        errors.nonprofile = 'There is no profile for this user';
        res.status(404).json(errors);
      }
      res.json(profile);
    })
    .catch(err =>
      res.status(404).json({ profile: 'There is no profile for this user' })
    );
});


0 commentaires