ホームページ >ウェブフロントエンド >jsチュートリアル >Express.js での高度なエラー処理をマスターして堅牢な Node.js アプリケーションを実現する
エラー処理は、堅牢な 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 のヒントやコツをさらにご覧ください。
以上がExpress.js での高度なエラー処理をマスターして堅牢な Node.js アプリケーションを実現するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。