Next.js: getServerSideProps์˜ ์˜ˆ์™ธ์— ๋Œ€ํ•œ 502 ์˜ค๋ฅ˜

์— ๋งŒ๋“  2020๋…„ 08์›” 07์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: vercel/next.js

๋ฒ„๊ทธ ์‹ ๊ณ 

๋ฒ„๊ทธ ์„ค๋ช…

์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์˜ getServerSideProps์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‘๋‹ต์€ ์ƒํƒœ ์ฝ”๋“œ 502 (Bad Gateway)์™€ ํ•จ๊ป˜ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ๋˜๋Š” ๊ธฐ๋ณธ 500 ํŽ˜์ด์ง€๋Š” ๋ Œ๋”๋ง๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ์•ฑ์ด ํ”„๋กœ๋•์…˜์— ๋ฐฐํฌ๋˜๋Š” ๋ฐฉ๋ฒ• ๋˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ์Šคํƒ ์ถ”์ ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 9.4.x์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ๋กœ 500 ์ƒํƒœ ์ฝ”๋“œ์™€ ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Next 9.5+ ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๋ ค๋ฉด

์ด๋Š” getServerSideProps์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— "๋ฌธ์ œ"ํŽ˜์ด์ง€๊ฐ€์žˆ๋Š” ์ƒ˜ํ”Œ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

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

์—ฌ๊ธฐ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

import React from "react";

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

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

vercel์— ๋ฐฐํฌ ๋œ์ด ํŽ˜์ด์ง€ : https://throw-app.vercel.app/problem

๊ทธ๋ฆฌ๊ณ  ์ปฌ :

โฏ 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

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์œ„์˜ ์•ฑ์„ Next 9.4๋กœ ๊ฐ„๋‹จํžˆ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด Next์— ๋Œ€ํ•œ ๊ธฐ๋ณธ 500 ํŽ˜์ด์ง€๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋˜๊ณ  500 ์ƒํƒœ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. 500์€ ๋‹จ์ˆœํžˆ "์„œ๋ฒ„ ์˜ค๋ฅ˜"๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  502๋Š” "์œ ํšจํ•˜์ง€ ์•Š์Œ / ์‘๋‹ต ์—†์Œ"์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ ์ƒท

์•„๋ž˜๋Š” https://throw-app.vercel.app/problem์˜ ์Šคํฌ๋ฆฐ ์ƒท์ด๋ฉฐ ์—ฌ๊ธฐ์— ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/spencewood/throw-app

๋‹ค์Œ 9.4

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

๋‹ค์Œ 9.5

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

๋‹ค๋ฅธ ์ƒ๊ฐ๋“ค

๋ถ„๋ช…ํžˆ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด์ง€๋งŒ ์„œ๋ฒ„ ์ธก์—์„œ ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์•ฑ์— ์ „๋‹ฌํ•˜๋Š” ๋™์•ˆ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋กœ ์ธํ•ด 502๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ๋˜ํ•œ ์˜ˆ์™ธ ๋กœ๊ทธ๋ฅผ โ€‹โ€‹๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์—ฌ๊ธฐ์— ์กฐ๊ธˆ ๋” ์ถ”๊ฐ€ํ•˜๊ณ  ์œ„์—์„œ ๋งํฌ ํ•œ ๋‚ด์šฉ์ด์ง€๋งŒ Vercel ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. Netlify์˜ ๋ฌธ์ œ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ๋˜‘๊ฐ™์€ ์ฝ”๋“œ๋กœ ์‹œ์ž‘ ์•ฑ์„ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค (์˜ˆ์œ ํด๋ฐฑ 502 ํŽ˜์ด์ง€๋Š” ์—†์ง€๋งŒ) : 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

์ด์— ๋Œ€ํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค : https://github.com/spencewood/sonnet-18

Vercel์—์„œ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” NextJ๊ฐ€ ์‚ฌ์šฉ์ž ์ง€์ • ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ getServerSideProps์˜ 404 / ๊ธฐํƒ€ ๋ฌธ์ œ๋ฅผ ํ‘œ์‹œํ–ˆ์ง€๋งŒ ์ด์ œ Vercel 502 ์˜ค๋ฅ˜ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ๋˜ํ•œ ์˜ˆ์™ธ ๋กœ๊ทธ๋ฅผ โ€‹โ€‹๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

https://github.com/vercel/next.js/pull/12841 ์—์„œ ํŠน๋ณ„ํžˆ ๊ตฌํ˜„๋˜์—ˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์ง€๋งŒ ๊ทธ ์‹ค์ œ ์ด์œ ์™€ ์‚ฌ์šฉ์ž ์ง€์ • ์˜ค๋ฅ˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ Doc์ด ์—ฌ์ „ํžˆ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ์ด์œ ๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 500 (https://nextjs.org/docs/advanced-features/custom-error-page#500-page)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰