Rumah >hujung hadapan web >tutorial js >Kesilapan Express.js Teratas dan Cara Membaikinya
Express.js ialah rangka kerja popular untuk membina aplikasi web dalam Node.js, tetapi pembangun berpengalaman pun menghadapi ralat yang sukar untuk dinyahpepijat. Panduan ini akan merangkumi beberapa ralat Express.js yang paling biasa, menerangkan sebab ia berlaku dan memberikan pembetulan praktikal untuk mengembalikan aplikasi anda ke landasan yang betul.
Ralat ini biasanya berlaku apabila anda cuba menghantar berbilang respons untuk permintaan yang sama. Sebagai contoh, anda mungkin secara tidak sengaja memanggil res.send() atau res.json() lebih daripada sekali dalam pengendali laluan.
Contoh:
app.get('/example', (req, res) => { res.send('First response'); res.send('Second response'); // This will throw the error. });
Betulkan:
Pastikan anda hanya menghantar satu jawapan bagi setiap permintaan. Gunakan logik bersyarat atau penyataan pulangan untuk menghalang pelaksanaan selanjutnya selepas menghantar respons.
app.get('/example', (req, res) => { if (!req.query.param) { return res.status(400).send('Bad Request'); } res.send('Valid Request'); });
Ini berlaku apabila perisian tengah tidak dipautkan dengan betul atau next() tidak dipanggil di dalamnya. Fungsi middleware mesti secara eksplisit memberikan kawalan kepada middleware atau pengendali laluan seterusnya.
Contoh:
app.use((req, res) => { console.log('Middleware executed'); // Forgot to call next() }); app.get('/test', (req, res) => { res.send('Hello, World!'); });
Betulkan:
Panggil next() melainkan perisian tengah menamatkan respons.
app.use((req, res, next) => { console.log('Middleware executed'); next(); // Pass control to the next middleware or route });
Jika req.body tidak ditentukan, kemungkinan besar anda terlupa menggunakan middleware parsing badan, seperti express.json() atau express.urlencoded().
Contoh:
app.post('/submit', (req, res) => { console.log(req.body); // undefined });
Betulkan:
Sertakan middleware penghuraian badan dalam pemulaan apl anda.
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'); });
Ralat ini berlaku apabila tiada laluan yang sepadan dengan permintaan masuk. Secara lalai, Express tidak menyediakan pengendali 404.
Betulkan:
Tambahkan perisian tengah tangkap semua pada penghujung takrif laluan anda untuk mengendalikan ralat 404.
app.use((req, res) => { res.status(404).send('Page Not Found'); });
Ini berlaku apabila proses lain sudah menggunakan port yang cuba diikat oleh apl anda.
Error: listen EADDRINUSE: address already in use :::3000
Betulkan:
Cari dan tamatkan proses bercanggah atau gunakan port lain. Anda juga boleh mengendalikan ralat secara pengaturcaraan:
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.`); } });
Ralat Express.js boleh mengecewakan, tetapi memahami puncanya menjadikannya lebih mudah untuk diselesaikan. Dengan pembetulan biasa ini, anda akan lebih bersedia untuk nyahpepijat aplikasi anda dan memastikan projek anda berjalan lancar.
Jika anda mendapati panduan ini membantu, tekan ikon ❤️ dan ikuti saya untuk mendapatkan lebih banyak petua dan helah JavaScript!
Atas ialah kandungan terperinci Kesilapan Express.js Teratas dan Cara Membaikinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!