ホームページ >ウェブフロントエンド >jsチュートリアル >Express.js の主な間違いとその修正方法
Express.js は、Node.js で Web アプリケーションを構築するための人気のあるフレームワークですが、熟練した開発者でもデバッグが難しいエラーに遭遇することがあります。このガイドでは、最も一般的な Express.js エラーのいくつかを取り上げ、そのエラーが発生する理由を説明し、アプリケーションを軌道に戻すための実践的な修正を提供します。
このエラーは通常、同じリクエストに対して複数の応答を送信しようとしたときに発生します。たとえば、ルート ハンドラー内で誤って res.send() または res.json() を複数回呼び出してしまう可能性があります。
例:
app.get('/example', (req, res) => { res.send('First response'); res.send('Second response'); // This will throw the error. });
修正:
リクエストごとに 1 つの応答のみを送信するようにしてください。条件付きロジックまたは return ステートメントを使用して、応答送信後のさらなる実行を防ぎます。
app.get('/example', (req, res) => { if (!req.query.param) { return res.status(400).send('Bad Request'); } res.send('Valid Request'); });
これは、ミドルウェアが適切にリンクされていないか、ミドルウェア内で next() が呼び出されない場合に発生します。ミドルウェア関数は、制御を次のミドルウェアまたはルート ハンドラーに明示的に渡す必要があります。
例:
app.use((req, res) => { console.log('Middleware executed'); // Forgot to call next() }); app.get('/test', (req, res) => { res.send('Hello, World!'); });
修正:
ミドルウェアが応答を終了しない限り、next() を呼び出します。
app.use((req, res, next) => { console.log('Middleware executed'); next(); // Pass control to the next middleware or route });
req.body が未定義の場合は、express.json() や Express.urlencoded() などの本文解析ミドルウェアを使用するのを忘れた可能性があります。
例:
app.post('/submit', (req, res) => { console.log(req.body); // undefined });
修正:
アプリの初期化に本文解析ミドルウェアを含めます。
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'); });
このエラーは、受信リクエストに一致するルートがない場合に発生します。デフォルトでは、Express は 404 ハンドラーを提供しません。
修正:
404 エラーを処理するには、ルート定義の最後にキャッチオール ミドルウェアを追加します。
app.use((req, res) => { res.status(404).send('Page Not Found'); });
これは、アプリがバインドしようとしているポートを別のプロセスがすでに使用している場合に発生します。
Error: listen EADDRINUSE: address already in use :::3000
修正:
競合するプロセスを見つけて終了するか、別のポートを使用してください。エラーをプログラムで処理することもできます:
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.`); } });
Express.js エラーはイライラすることがありますが、根本原因を理解すると解決が容易になります。これらの共通の修正により、アプリケーションをデバッグし、プロジェクトをスムーズに実行し続けるための準備が整います。
このガイドが役に立ったと思われた場合は、❤️ アイコンをクリックしてフォローして、JavaScript のヒントとコツをさらにご覧ください。
以上がExpress.js の主な間違いとその修正方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。