오류 처리는 강력한 Express.js 애플리케이션을 개발하는 데 있어 중요한 측면입니다. 처리되지 않은 예외 포착, 사용자 입력 유효성 검사, 타사 API 오류의 적절한 관리 등 세심하게 계획된 오류 처리 전략을 사용하면 디버깅 시간을 절약하고 원활한 사용자 경험을 보장할 수 있습니다. 이 블로그에서는 실제 사례를 바탕으로 Express.js의 오류 처리를 위한 고급 기술을 살펴보겠습니다.
오류 처리가 중요한 이유
소프트웨어 개발에서 오류는 피할 수 없지만 좋은 응용 프로그램과 훌륭한 응용 프로그램을 구분하는 것은 오류를 얼마나 효과적으로 관리하느냐에 달려 있습니다. 고급 오류 처리에 투자해야 하는 주요 이유는 다음과 같습니다.
중앙 집중식 오류 처리 미들웨어는 Express.js 앱 전체의 오류 관리를 단순화합니다.
만드는 방법은 다음과 같습니다.
// 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;
앱에서의 사용법:
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'));
도우미 함수를 사용하여 비동기 경로 핸들러에서 try-catch 블록을 중복하지 마세요.
const asyncHandler = (fn) => (req, res, next) => Promise.resolve(fn(req, res, next)).catch(next);
사용 예:
app.get('/data', asyncHandler(async (req, res) => { const data = await fetchData(); // Assume this is an async function res.json({ success: true, data }); }));
이 접근 방식을 사용하면 fetchData의 모든 오류가 중앙 집중식 오류 처리기에 자동으로 전달됩니다.
express-async-errors 라이브러리는 Express.js 애플리케이션 내 비동기 코드의 오류를 처리하기 위해 간단하고 널리 사용되는 솔루션입니다.
설치:
npm install express-async-errors
사용법:
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'));
express-async-errors 라이브러리는 비동기 함수의 오류를 원활하게 처리하여 코드 가독성을 높이고 상용구를 줄입니다.
앱이 처리되지 않은 거부 및 포착되지 않은 예외를 처리하는지 확인하세요.
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); });
입력 검증을 위해 Joi와 같은 라이브러리를 활용하고 오류 처리를 원활하게 통합합니다.
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!' }); });
Express.js의 오류 처리 모범 사례
이 블로그가 도움이 되었다면 ❤️ 좋아요를 누르고 팔로우하여 더 많은 JavaScript 팁과 요령을 확인하세요!
위 내용은 강력한 Node.js 애플리케이션을 위해 Express.js의 고급 오류 처리 마스터하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!