Next.jsでBOTからのアクセス時に500になる
本番稼働中のNext.js アプリケーションのログを眺めていると、稀にエラーを吐いていました。
環境
Key | Val |
---|---|
Node.js | 20.9.0 |
Next.js | 13.4.13 |
エラーの内容
- error Failed to handle request for / TypeError: fetch failed at Object.fetch (node:internal/deps/undici/undici:11372:11) at async invokeRequest (/var/www/app/sample-app/node_modules/next/dist/server/lib/server-ipc/invoke-request.js:21:12) at async requestHandler (/var/www/app/sample-app/node_modules/next/dist/server/lib/start-server.js:336:33) at async Server.<anonymous> (/var/www/app/sample-app/node_modules/next/dist/server/lib/start-server.js:152:13) { cause: _RequestContentLengthMismatchError: Request body length does not match content-length header at write (node:internal/deps/undici/undici:8302:41) at _resume (node:internal/deps/undici/undici:8276:33) at resume (node:internal/deps/undici/undici:8173:7) at connect (node:internal/deps/undici/undici:8162:7) { code: 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH' } }
原因
UND_ERR_REQ_CONTENT_LENGTH_MISMATCH
でググると、お有難いことに下記記事がヒットしました。
本当にありがとうございます。
※Version 13.4.13時点 本番環境で以下のようなエラーが発生することがある
さて、今回の環境を見てみましょう。
Next.js 13.4.13ですね!!! まさに引用元のバージョンでした。
これにより、OGPを取得しに来たBOTのアクセス時にエラーが発生していたようです。
この影響でOGPが表示されていませんでした。
対応
NextJS fails with UND_ERR_REQ_CONTENT_LENGTH_MISMATCH after redirect from server
I was experiencing a similar issue. Upgrading to the latest version of NEXT helped resolve it for me. Version 13.4.19 as of this comment.
対応方法についてもお有難いことに既に試している方がいました。
13.4.19では直っているそうです。
ということでnextのバージョンを上げて終了です。