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.
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
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".
Berikut adalah tangkapan layar dari https://throw-app.vercel.app/problem dengan sumber di sini: https://github.com/spencewood/throw-app
9.4 berikutnya
9,5 berikutnya
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.
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)
Komentar yang paling membantu
Masalah yang sama disini ! Plus, tidak dapat melihat log pengecualian.