Next.js: Kesalahan 502 pada pengecualian di getServerSideProps

Dibuat pada 7 Agu 2020  ·  4Komentar  ·  Sumber: vercel/next.js

Laporan bug

Jelaskan bugnya

Ketika pengecualian dilemparkan ke getServerSideProps di lingkungan tanpa server, respons dikembalikan dengan kode status 502 (Gateway Buruk), yang jelas bukan seperti itu. Selain itu, 500 halaman kustom atau default tidak dirender dalam kasus ini, sehingga pengguna dapat melihat pelacakan tumpukan tergantung pada bagaimana atau di mana aplikasi diterapkan dalam produksi. Ini tampaknya menjadi masalah Next 9.5+, karena mengembalikan kode status 500 dan halaman kesalahan yang sesuai dengan kode yang sama di 9.4.x.

Untuk Mereproduksi

Ini akan terjadi dengan halaman apa pun yang mengalami kesalahan dalam getServerSideProps. Saya telah membuat repo contoh di sini dengan halaman "masalah":

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

Ini hanya mencakup:

import React from "react";

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

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

Halaman ini digunakan untuk vercel: https://throw-app.vercel.app/problem

Dan ikal:

❯ 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

Perilaku yang diharapkan

Cukup downgrade aplikasi di atas ke Next 9.4 akan dengan benar membuat 500 halaman default untuk Next dan akan mengembalikan kode status 500. Inilah yang seharusnya terjadi, karena 500 menunjukkan "kesalahan server" dan 502 menunjukkan "tidak valid / tidak ada respons".

Screenshot

Berikut adalah tangkapan layar dari https://throw-app.vercel.app/problem dengan sumber di sini: https://github.com/spencewood/throw-app

9.4 berikutnya

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

9,5 berikutnya

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

Pikiran Lainnya

Jelas Anda tidak akan membuat kesalahan seperti ini, tetapi pengecualian apa pun yang diberikan saat sisi server menghasilkan data dinamis untuk dikirim ke aplikasi akan menyebabkan 502.

bug

Komentar yang paling membantu

Masalah yang sama disini ! Plus, tidak dapat melihat log pengecualian.

Semua 4 komentar

Saya ingin menambahkan sedikit lagi di sini dan menyebutkan bahwa ini bukan masalah Vercel meskipun itulah yang saya tautkan di atas. Saya telah menerapkan aplikasi pemula dengan kode yang sama persis untuk halaman masalah di Netlify (meskipun mereka tidak memiliki halaman 502 fallback yang cukup): 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

Kode untuk itu ada di sini: https://github.com/spencewood/sonnet-18

Memiliki masalah yang sama dengan ini di Vercel - sebelumnya NextJs akan menggunakan halaman kesalahan kustom kami untuk menampilkan 404 / masalah lain dari getServerSideProps tetapi sekarang kami mendapatkan halaman kesalahan Vercel 502.

Masalah yang sama disini ! Plus, tidak dapat melihat log pengecualian.

Saya menemukan bahwa itu diterapkan secara khusus di https://github.com/vercel/next.js/pull/12841 , tetapi tidak yakin mendapatkan alasan sebenarnya dan bahkan mengapa Doc untuk halaman kesalahan khusus masih mengatakan bahwa kami dapat mengandalkan 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat