Rumah > hujung hadapan web > tutorial js > Kesilapan Express.js Teratas dan Cara Membaikinya

Kesilapan Express.js Teratas dan Cara Membaikinya

Mary-Kate Olsen
Lepaskan: 2024-11-27 18:40:14
asal
336 orang telah melayarinya

Top Express.js Mistakes and How to Fix Them

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.

1. Ralat: Tidak Dapat Menetapkan Pengepala Selepas Ia Dihantar

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.
});

Salin selepas log masuk

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');
});

Salin selepas log masuk

2. Ralat: Middleware Tidak Melaksanakan

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!');
});

Salin selepas log masuk

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
});

Salin selepas log masuk

3. Ralat: req.body Undefined

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
});
Salin selepas log masuk

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');
});
Salin selepas log masuk

4. Ralat: Laluan Tidak Ditemui (404)

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');
});

Salin selepas log masuk

5. Ralat: EADDRINUSE (Port dalam Penggunaan)

Ini berlaku apabila proses lain sudah menggunakan port yang cuba diikat oleh apl anda.

Error: listen EADDRINUSE: address already in use :::3000
Salin selepas log masuk

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.`);
    }
});

Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan