Next.js: 502 Fehler bei Ausnahme in getServerSideProps

Erstellt am 7. Aug. 2020  ·  4Kommentare  ·  Quelle: vercel/next.js

Fehlerbericht

Beschreibe den Fehler

Wenn in getServerSideProps in einer Umgebung ohne Server eine Ausnahme ausgelöst wird, wird die Antwort mit dem Statuscode 502 (Bad Gateway) zurückgegeben, was definitiv nicht der Fall ist. Darüber hinaus werden in diesem Fall benutzerdefinierte oder standardmäßige 500 Seiten nicht gerendert, sodass dem Benutzer möglicherweise eine Stapelverfolgung angezeigt wird, je nachdem, wie oder wo die App in der Produktion bereitgestellt wird. Dies scheint ein Next 9.5+ -Problem zu sein, da ein 500-Statuscode und eine ordnungsgemäße Fehlerseite mit demselben Code in 9.4.x zurückgegeben wurden.

Reproduzieren

Dies geschieht bei jeder Seite, bei der ein Fehler in getServerSideProps auftritt. Ich habe hier ein Beispiel-Repo mit einer "Problem" -Seite erstellt:

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

Dies beinhaltet einfach:

import React from "react";

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

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

Diese Seite wurde für vercel bereitgestellt: https://throw-app.vercel.app/problem

Und locken:

❯ 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

Erwartetes Verhalten

Durch einfaches Downgrade der obigen App auf Next 9.4 wird die Standard-500-Seite für Next korrekt gerendert und ein 500-Statuscode zurückgegeben. Dies sollte passieren, da ein 500 einfach "Serverfehler" und 502 "ungültig / keine Antwort" anzeigt.

Screenshots

Unten finden Sie Screenshots von https://throw-app.vercel.app/problem mit der Quelle hier: https://github.com/spencewood/throw-app

Weiter 9.4

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

Weiter 9.5

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

andere Gedanken

Natürlich werden Sie keinen solchen Fehler auslösen, aber alle Ausnahmen, die beim serverseitigen Generieren dynamischer Daten an die App ausgelöst werden, führen zum 502.

bug

Hilfreichster Kommentar

Selbes Problem hier ! Außerdem können keine Ausnahmeprotokolle angezeigt werden.

Alle 4 Kommentare

Ich wollte hier nur ein wenig mehr hinzufügen und erwähnen, dass dies kein Vercel-Problem ist, obwohl ich oben darauf verwiesen habe. Ich habe eine Starter-App mit genau demselben Code für die Problemseite auf Netlify bereitgestellt (obwohl sie keine hübsche Fallback-502-Seite haben): 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

Der Code dafür ist hier: https://github.com/spencewood/sonnet-18

Das gleiche Problem mit diesem bei Vercel - zuvor verwendeten NextJs unsere benutzerdefinierte Fehlerseite, um 404 / andere Probleme von getServerSideProps anzuzeigen, aber jetzt erhalten wir die Vercel 502-Fehlerseite.

Selbes Problem hier ! Außerdem können keine Ausnahmeprotokolle angezeigt werden.

Ich fand, dass es speziell in https://github.com/vercel/next.js/pull/12841 implementiert wurde, war mir aber nicht sicher, warum und warum Doc für benutzerdefinierte Fehlerseiten immer noch sagt, dass wir uns darauf verlassen können 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen