Pengendalian ralat ialah aspek kritikal untuk membangunkan aplikasi Express.js yang mantap. Sama ada ia menangkap pengecualian yang tidak dikendalikan, mengesahkan input pengguna atau mengurus kegagalan API pihak ketiga dengan anggun, strategi pengendalian ralat yang difikirkan dengan baik boleh menjimatkan jam penyahpepijatan dan memastikan pengalaman pengguna yang lancar. Dalam blog ini, kami akan menyelami teknik lanjutan untuk pengendalian ralat dalam Express.js, disokong oleh contoh dunia sebenar.
Mengapa Pengendalian Ralat Penting
Ralat tidak dapat dielakkan dalam pembangunan perisian, tetapi apa yang memisahkan aplikasi yang baik daripada yang hebat ialah sejauh mana ia menguruskan ralat tersebut dengan berkesan. Sebab utama untuk melabur dalam pengendalian ralat lanjutan termasuk:
Perisian tengah pengendalian ralat terpusat memudahkan pengurusan ralat merentas apl Express.js anda.
Berikut ialah cara untuk menciptanya:
// errorHandler.js const errorHandler = (err, req, res, next) => { console.error(err.stack); const statusCode = err.status || 500; // Default to 500 for unexpected errors const message = err.message || 'Internal Server Error'; res.status(statusCode).json({ success: false, message, }); }; module.exports = errorHandler;
Penggunaan dalam apl anda:
const express = require('express'); const errorHandler = require('./middleware/errorHandler'); const app = express(); // Your routes go here app.use(errorHandler); // Centralized error handler app.listen(3000, () => console.log('Server running on port 3000'));
Elakkan menduplikasi blok cuba-tangkap dalam pengendali laluan async anda dengan menggunakan fungsi pembantu:
const asyncHandler = (fn) => (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next);
Contoh Penggunaan:
app.get('/data', asyncHandler(async (req, res) => { const data = await fetchData(); // Assume this is an async function res.json({ success: true, data }); }));
Pendekatan ini memastikan sebarang ralat dalam fetchData dihantar secara automatik kepada pengendali ralat terpusat anda.
Pustaka express-async-errors ialah penyelesaian yang mudah dan digunakan secara meluas untuk mengendalikan ralat dalam kod tak segerak dalam aplikasi Express.js.
pemasangan:
npm install express-async-errors
Penggunaan:
require('express-async-errors'); // Import the library const express = require('express'); const app = express(); app.get('/data', async (req, res) => { const data = await fetchData(); // If this fails, the error is handled automatically res.json({ success: true, data }); }); // Centralized error handler app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ success: false, message: 'Something went wrong!' }); }); app.listen(3000, () => console.log('Server running on port 3000'));
Pustaka express-async-errors meningkatkan kebolehbacaan kod dan mengurangkan boilerplate dengan mengendalikan ralat dalam fungsi async dengan lancar.
Pastikan apl anda mengendalikan penolakan yang tidak dikendalikan dan pengecualian yang tidak ditangkap:
process.on('unhandledRejection', (reason, promise) => { console.error('Unhandled Rejection:', reason); // Add your cleanup logic here process.exit(1); }); process.on('uncaughtException', (err) => { console.error('Uncaught Exception:', err); // Add your cleanup logic here process.exit(1); });
Gunakan perpustakaan seperti Joi untuk pengesahan input dan integrasikan pengendalian ralat dengan lancar:
Contoh dengan Joi:
const Joi = require('joi'); const validateUser = (req, res, next) => { const schema = Joi.object({ name: Joi.string().min(3).required(), email: Joi.string().email().required(), }); const { error } = schema.validate(req.body); if (error) { return next(new Error(error.details[0].message)); } next(); }; app.post('/user', validateUser, (req, res) => { res.json({ success: true, message: 'User created successfully!' }); });
Amalan Terbaik untuk Pengendalian Ralat dalam Express.js
Jika anda mendapati blog ini membantu, tekan ❤️ suka dan ikuti untuk mendapatkan lebih banyak petua dan helah JavaScript!
Atas ialah kandungan terperinci Menguasai Pengendalian Ralat Lanjutan dalam Express.js untuk Aplikasi Node.js Teguh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!