Next.js: 502 erro na exceção em getServerSideProps

Criado em 7 ago. 2020  ·  4Comentários  ·  Fonte: vercel/next.js

Relatório de erro

Descreva o bug

Quando uma exceção é lançada em getServerSideProps em um ambiente sem servidor, a resposta é retornada com um código de status de 502 (Bad Gateway), que definitivamente não é o que é. Além disso, páginas personalizadas ou padrão de 500 não são renderizadas neste caso, então o usuário pode ver um rastreamento de pilha dependendo de como ou onde o aplicativo é implantado na produção. Este parece ser um problema do Next 9.5+, pois retornou um código de status 500 e uma página de erro adequada com o mesmo código em 9.4.x.

Reproduzir

Isso acontecerá com qualquer página que encontrar um erro em getServerSideProps. Criei um repositório de amostra aqui com uma página de "problema":

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

Isso simplesmente inclui:

import React from "react";

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

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

Esta página implementada para vercel: https://throw-app.vercel.app/problem

E 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

Comportamento esperado

Simplesmente fazer o downgrade do aplicativo acima para Next 9.4 renderizará corretamente a página 500 padrão para Next e retornará um código de status 500. Isso é o que deveria estar acontecendo, pois 500 indica simplesmente "erro do servidor" e 502 indica "inválido / sem resposta".

Capturas de tela

Abaixo estão as capturas de tela de https://throw-app.vercel.app/problem com a fonte aqui: https://github.com/spencewood/throw-app

Próximo 9.4

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

Próximos 9,5

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

outros pensamentos

Obviamente, você não vai lançar um erro como este, mas quaisquer exceções lançadas enquanto o lado do servidor gera dados dinâmicos a serem entregues ao aplicativo causará o 502.

bug

Comentários muito úteis

Mesmo problema aqui ! Além disso, não consigo ver os logs de exceção.

Todos 4 comentários

Eu queria acrescentar um pouco mais aqui e mencionar que esse não é um problema do Vercel, embora tenha sido o que eu indiquei acima. Implantei um aplicativo inicial com exatamente o mesmo código para a página do problema no Netlify (embora eles não tenham uma página 502 bem alternativa): 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

O código para isso está aqui: https://github.com/spencewood/sonnet-18

Tendo o mesmo problema com isso no Vercel - anteriormente, NextJs usaria nossa página de erro personalizada para exibir 404 / outros problemas de getServerSideProps, mas agora temos a página de erro Vercel 502.

Mesmo problema aqui ! Além disso, não consigo ver os logs de exceção.

Descobri que foi implementado especialmente em https://github.com/vercel/next.js/pull/12841 , mas não tenho certeza do verdadeiro motivo disso e até mesmo por que o Doc para páginas de erro personalizadas ainda diz que podemos confiar em 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

nickredmark picture nickredmark  ·  60Comentários

Timer picture Timer  ·  87Comentários

matthewmueller picture matthewmueller  ·  102Comentários

ematipico picture ematipico  ·  66Comentários

timneutkens picture timneutkens  ·  72Comentários