ホームページ > ウェブフロントエンド > jsチュートリアル > Express.js の主な間違いとその修正方法

Express.js の主な間違いとその修正方法

Mary-Kate Olsen
リリース: 2024-11-27 18:40:14
オリジナル
267 人が閲覧しました

Top Express.js Mistakes and How to Fix Them

Express.js は、Node.js で Web アプリケーションを構築するための人気のあるフレームワークですが、熟練した開発者でもデバッグが難しいエラーに遭遇することがあります。このガイドでは、最も一般的な Express.js エラーのいくつかを取り上げ、そのエラーが発生する理由を説明し、アプリケーションを軌道に戻すための実践的な修正を提供します。

1. エラー: 送信後にヘッダーを設定できません

このエラーは通常、同じリクエストに対して複数の応答を送信しようとしたときに発生します。たとえば、ルート ハンドラー内で誤って 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');
});

ログイン後にコピー

2. エラー: ミドルウェアが実行されていません

これは、ミドルウェアが適切にリンクされていないか、ミドルウェア内で 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
});

ログイン後にコピー

3. エラー: req.body 未定義

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');
});
ログイン後にコピー

4. エラー: ルートが見つかりません (404)

このエラーは、受信リクエストに一致するルートがない場合に発生します。デフォルトでは、Express は 404 ハンドラーを提供しません。

修正:

404 エラーを処理するには、ルート定義の最後にキャッチオール ミドルウェアを追加します。

app.use((req, res) => {
    res.status(404).send('Page Not Found');
});

ログイン後にコピー

5. エラー: EADDRINUSE (ポートが使用中)

これは、アプリがバインドしようとしているポートを別のプロセスがすでに使用している場合に発生します。

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート