Next.js: getServerSidePropsの例外で502エラー

作成日 2020年08月07日  ·  4コメント  ·  ソース: vercel/next.js

バグレポート

バグを説明する

サーバーレス環境のgetServerSidePropsで例外がスローされると、応答はステータスコード502(Bad Gateway)で返されますが、これは間違いなくそれが何であるかではありません。 さらに、この場合、カスタムまたはデフォルトの500ページはレンダリングされないため、アプリが本番環境で展開される方法または場所に応じて、ユーザーにスタックトレースが表示される場合があります。 9.4.xで500のステータスコードと同じコードの適切なエラーページが返されたため、これは次の9.5以降の問題のようです。

再現するには

これは、getServerSidePropsでエラーが発生したすべてのページで発生します。 ここに「問題」ページを含むサンプルリポジトリを作成しました。

https://github.com/spencewood/throw-app

これには、次のものが含まれます。

import React from "react";

export default function Problem() {
  return (
    <>
      <h1>Problem!</h1>
    </>
  );
}

export const getServerSideProps = () => {
  throw new Error("error");
};

このページはvercelにデプロイされました: https ://throw-app.vercel.app/problem

そしてカール:

❯ curl -I "https://throw-app.vercel.app/problem"
HTTP/2 502 
date: Fri, 07 Aug 2020 18:20:24 GMT
content-type: text/plain; charset=utf-8
x-nextjs-page: /problem
content-length: 68
server: Vercel
x-vercel-id: cle1::2cxmx-1596824424449-1d2c09ffce13
strict-transport-security: max-age=63072000; includeSubDomains; preload
cache-control: s-maxage=0

予想される行動

上記のアプリをNext9.4にダウングレードするだけで、Nextのデフォルトの500ページが正しくレンダリングされ、500ステータスコードが返されます。 500は単に「サーバーエラー」を示し、502は「無効/応答なし」を示すため、これが発生するはずです。

スクリーンショット

以下は、 https//throw-app.vercel.app/problemのスクリーンショットとソースがここにあります: //github.com/spencewood/throw-app

次の9.4

Screen Shot 2020-08-07 at 1 25 55 PM

次の9.5

Screen Shot 2020-08-07 at 1 25 59 PM

他の考え

明らかに、このようなエラーはスローされませんが、サーバー側で動的データを生成してアプリに配信するときに例外がスローされると、502が発生します。

bug

最も参考になるコメント

ここでも同じ問題です! さらに、例外ログを表示できません。

全てのコメント4件

ここにもう少し追加して、これはVercelの問題ではないことを述べたいと思いますが、それは上記でリンクしたものです。 Netlifyの問題ページにまったく同じコードを使用してスターターアプリをデプロイしました(ただし、かなりのフォールバック502ページはありません): https ://distracted-curie-3f8cdd.netlify.app/problem

❯ curl -I "https://distracted-curie-3f8cdd.netlify.app/problem"
HTTP/2 502 
cache-control: no-cache
date: Fri, 07 Aug 2020 21:16:19 GMT
content-length: 386
content-type: text/plain; charset=utf-8
age: 0
server: Netlify
x-nf-request-id: 17709115-ace0-4300-a026-dc21d6cd5cad-2642676

そのためのコードはここにあります: https

Vercelでこれと同じ問題が発生します-以前はNextJsはカスタムエラーページを使用してgetServerSidePropsから404 /その他の問題を表示していましたが、現在はVercel502エラーページが表示されます。

ここでも同じ問題です! さらに、例外ログを表示できません。

https://github.com/vercel/next.js/pull/12841で特別に実装されていることがわかりましたが、その本当の理由はわかりません

このページは役に立ちましたか?
0 / 5 - 0 評価