Next.js: Erreur 502 sur exception dans getServerSideProps

Créé le 7 août 2020  ·  4Commentaires  ·  Source: vercel/next.js

Rapport d'erreur

Décrivez le bogue

Lorsqu'une exception est levée dans getServerSideProps dans un environnement sans serveur, la réponse est renvoyée avec un code d'état 502 (Bad Gateway), ce qui n'est certainement pas ce qu'il est. En outre, les pages 500 personnalisées ou par défaut ne sont pas rendues dans ce cas, de sorte que l'utilisateur peut voir une trace de pile en fonction de la manière ou de l'emplacement de déploiement de l'application en production. Cela semble être un problème Next 9.5+, car il a renvoyé un code d'état 500 et une page d'erreur appropriée avec le même code dans 9.4.x.

Reproduire

Cela se produira avec toute page qui rencontre une erreur dans getServerSideProps. J'ai créé un exemple de dépôt ici avec une page "problème":

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

Cela comprend simplement:

import React from "react";

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

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

Cette page déployée sur vercel: https://throw-app.vercel.app/problem

Et curl:

❯ 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

Comportement prévisible

Le simple fait de rétrograder l'application ci-dessus vers Next 9.4 rendra correctement la page 500 par défaut pour Next et renverra un code d'état 500. C'est ce qui devrait se passer, car un 500 indique simplement "erreur de serveur" et 502 indique "non valide / pas de réponse".

Captures d'écran

Vous trouverez ci-dessous des captures d'écran de https://throw-app.vercel.app/problem avec la source ici: https://github.com/spencewood/throw-app

Suivant 9.4

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

Suivant 9.5

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

d'autres pensées

De toute évidence, vous n'allez pas lancer une erreur comme celle-ci, mais toute exception levée lors de la génération de données dynamiques côté serveur à l'application entraînera le 502.

bug

Commentaire le plus utile

Même problème ici ! De plus, je ne peux pas voir les journaux d'exceptions.

Tous les 4 commentaires

Je voulais ajouter un peu plus ici et mentionner que ce n'est pas un problème Vercel, même si c'est ce à quoi j'ai lié ci-dessus. J'ai déployé une application de démarrage avec exactement le même code pour la page de problème sur Netlify (bien qu'ils n'aient pas de jolie page de secours 502): https://distraced-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

Le code pour cela est ici: https://github.com/spencewood/sonnet-18

Ayant le même problème avec cela sur Vercel - auparavant, NextJs utilisait notre page d'erreur personnalisée pour afficher 404 / autres problèmes de getServerSideProps, mais nous obtenons maintenant la page d'erreur Vercel 502.

Même problème ici ! De plus, je ne peux pas voir les journaux d'exceptions.

J'ai trouvé qu'il était spécialement implémenté dans https://github.com/vercel/next.js/pull/12841 , mais je ne suis pas sûr d'avoir la vraie raison de cela et même pourquoi Doc pour les pages d'erreur personnalisées dit toujours que nous pouvons compter sur 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

Cette page vous a été utile?
0 / 5 - 0 notes