Express.js est un framework populaire pour créer des applications Web dans Node.js, mais même les développeurs chevronnés rencontrent des erreurs qui peuvent être difficiles à déboguer. Ce guide couvrira certaines des erreurs Express.js les plus courantes, expliquera pourquoi elles se produisent et fournira des correctifs pratiques pour remettre votre application sur la bonne voie.
Cette erreur se produit généralement lorsque vous tentez d'envoyer plusieurs réponses pour la même demande. Par exemple, vous pourriez accidentellement appeler res.send() ou res.json() plus d'une fois dans un gestionnaire de route.
Exemple :
app.get('/example', (req, res) => { res.send('First response'); res.send('Second response'); // This will throw the error. });
Correction :
Assurez-vous de n’envoyer qu’une seule réponse par demande. Utilisez une logique conditionnelle ou des instructions return pour empêcher toute exécution ultérieure après l'envoi d'une réponse.
app.get('/example', (req, res) => { if (!req.query.param) { return res.status(400).send('Bad Request'); } res.send('Valid Request'); });
Cela se produit lorsque le middleware n'est pas correctement lié ou que next() n'est pas appelé à l'intérieur. Les fonctions middleware doivent explicitement passer le contrôle au prochain middleware ou gestionnaire de route.
Exemple :
app.use((req, res) => { console.log('Middleware executed'); // Forgot to call next() }); app.get('/test', (req, res) => { res.send('Hello, World!'); });
Correction :
Appelez next() à moins que le middleware ne mette fin à la réponse.
app.use((req, res, next) => { console.log('Middleware executed'); next(); // Pass control to the next middleware or route });
Si req.body n'est pas défini, c'est probablement parce que vous avez oublié d'utiliser un middleware d'analyse du corps, tel que express.json() ou express.urlencoded().
Exemple :
app.post('/submit', (req, res) => { console.log(req.body); // undefined });
Correction :
Incluez le middleware d'analyse corporelle dans l'initialisation de votre application.
app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.post('/submit', (req, res) => { console.log(req.body); // Now it works res.send('Data received'); });
Cette erreur se produit lorsqu'aucune route ne correspond à la requête entrante. Par défaut, Express ne fournit pas de gestionnaire 404.
Correction :
Ajoutez un middleware fourre-tout à la fin de vos définitions de routes pour gérer les erreurs 404.
app.use((req, res) => { res.status(404).send('Page Not Found'); });
Cela se produit lorsqu'un autre processus utilise déjà le port auquel votre application tente de se lier.
Error: listen EADDRINUSE: address already in use :::3000
Correction :
Recherchez et terminez le processus en conflit ou utilisez un autre port. Vous pouvez également gérer l'erreur par programme :
const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server running on port ${port}`); }).on('error', (err) => { if (err.code === 'EADDRINUSE') { console.error(`Port ${port} is already in use. Please use a different port.`); } });
Les erreurs Express.js peuvent être frustrantes, mais comprendre leurs causes profondes les rend plus faciles à résoudre. Avec ces correctifs courants, vous serez mieux équipé pour déboguer vos applications et assurer le bon fonctionnement de vos projets.
Si vous avez trouvé ce guide utile, cliquez sur l'icône ❤️ et suivez-moi pour plus de trucs et astuces JavaScript !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!