Next.js: 502 error en la excepción en getServerSideProps

Creado en 7 ago. 2020  ·  4Comentarios  ·  Fuente: vercel/next.js

Informe de error

Describe el error

Cuando se lanza una excepción en getServerSideProps en un entorno sin servidor, la respuesta se devuelve con un código de estado 502 (Bad Gateway), que definitivamente no es lo que es. Además, las páginas 500 personalizadas o predeterminadas no se procesan en este caso, por lo que el usuario puede ver un seguimiento de la pila según cómo o dónde se implemente la aplicación en producción. Este parece ser un problema de Next 9.5+, ya que devolvió un código de estado 500 y una página de error adecuada con el mismo código en 9.4.x.

Reproducir

Esto sucederá con cualquier página que encuentre un error en getServerSideProps. He creado un repositorio de muestra aquí con una página de "problemas":

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

Esto simplemente incluye:

import React from "react";

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

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

Esta página desplegada en vercel: https://throw-app.vercel.app/problem

Y rizo:

❯ 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

Comportamiento esperado

Simplemente degradar la aplicación anterior a Siguiente 9.4 representará correctamente la página 500 predeterminada para Siguiente y devolverá un código de estado 500. Esto es lo que debería estar sucediendo, ya que un 500 indica simplemente "error del servidor" y 502 indica "no válido / sin respuesta".

Capturas de pantalla

A continuación se muestran capturas de pantalla de https://throw-app.vercel.app/problem con la fuente aquí: https://github.com/spencewood/throw-app

Siguiente 9.4

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

Siguiente 9.5

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

otros pensamientos

Obviamente, no va a generar un error como este, pero cualquier excepción lanzada mientras se generan datos dinámicos del lado del servidor para ser entregados a la aplicación provocará el error 502.

bug

Comentario más útil

El mismo problema aqui ! Además, no puede ver los registros de excepciones.

Todos 4 comentarios

Quería agregar un poco más aquí y mencionar que este no es un problema de Vercel, aunque eso es lo que mencioné anteriormente. Implementé una aplicación de inicio con exactamente el mismo código para la página del problema en Netlify (aunque no tienen una página 502 de respaldo bonita): 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

El código para eso está aquí: https://github.com/spencewood/sonnet-18

Tener el mismo problema con esto en Vercel: anteriormente, NextJs usaba nuestra página de error personalizada para mostrar 404 / otros problemas de getServerSideProps, pero ahora obtenemos la página de error Vercel 502.

El mismo problema aqui ! Además, no puede ver los registros de excepciones.

Descubrí que se implementó especialmente en https://github.com/vercel/next.js/pull/12841 , pero no estoy seguro de la verdadera razón de eso e incluso por qué Doc para páginas de error personalizadas todavía dice que podemos confiar en 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

¿Fue útil esta página
0 / 5 - 0 calificaciones