Gatsby: ์˜ค๋ฅ˜ / ํŽ˜์ด์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. React๋ฅผ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2019๋…„ 11์›” 19์ผ  ยท  139์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: gatsbyjs/gatsby

๊ธฐ์ˆ 

publicLoader.loadPage .cache/production-app.js ์—์ด ์˜ค๋ฅ˜์— ๋Œ€ํ•œ Safari ๋ฐ Mobile Safari (๋‹ค์–‘ํ•œ ๋ฒ„์ „ ๋ฐ ๋ธŒ๋ผ์šฐ์ €)์˜ Bugsnag ๋ณด๊ณ ์„œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค.

Capture d'eฬcran 2019-11-19 12 20 44

์žฌํ˜„ ๋‹จ๊ณ„

macOS Safari์—์„œ์ด ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋Š” https://lebikini.com์ž…๋‹ˆ๋‹ค.

์˜ˆ์ƒ ๊ฒฐ๊ณผ

์˜ค๋ฅ˜ ์—†์Œ

์‹ค์ œ ๊ฒฐ๊ณผ

์˜ค๋ฅ˜

ํ™˜๊ฒฝ

  System:
    OS: macOS 10.14.6
    CPU: (8) x64 Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
    Shell: 5.3 - /bin/zsh
  Binaries:
    Node: 10.15.3 - ~/.nvm/versions/node/v10.15.3/bin/node
    Yarn: 1.19.0 - /usr/local/bin/yarn
    npm: 6.12.0 - ~/.nvm/versions/node/v10.15.3/bin/npm
  Languages:
    Python: 2.7.16 - /usr/local/bin/python
  Browsers:
    Chrome: 78.0.3904.97
    Firefox: 70.0
    Safari: 13.0.3
  npmPackages:
    gatsby: ^2.17.13 => 2.17.13
    gatsby-image: ^2.2.32 => 2.2.32
    gatsby-plugin-google-analytics: ^2.1.26 => 2.1.26
    gatsby-plugin-manifest: ^2.2.27 => 2.2.27
    gatsby-plugin-netlify: ^2.1.24 => 2.1.24
    gatsby-plugin-react-helmet: ^3.1.14 => 3.1.14
    gatsby-plugin-sharp: ^2.2.38 => 2.2.38
    gatsby-plugin-styled-components: ^3.1.12 => 3.1.12
    gatsby-plugin-typescript: ^2.1.17 => 2.1.17
    gatsby-source-filesystem: ^2.1.36 => 2.1.36
    gatsby-transformer-sharp: ^2.3.4 => 2.3.4

๊ด€๋ จ : https://github.com/gatsbyjs/gatsby/issues/15080

not stale confirmed internal bug

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

์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

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

ํžˆ์•ผ!

์ด ๋ฌธ์ œ๋Š” ์กฐ์šฉํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌด์‹œ ๋ฌด์‹œํ•œ ์กฐ์šฉํ•จ. ๐Ÿ‘ป

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ˜„์žฌ 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ์ง€ 20 ์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ์—ด๋ ค๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋‹ต์žฅ ํ•ด์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์—ด์–ด๋‘๊ธฐ ์œ„ํ•ด "๋ถ€์‹คํ•˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ Pull Request๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR ์—ด๊ธฐ, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” gatsby.dev/contribute ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

Gatsby ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ผ์›์ด๋˜์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿ’œ

@antoinerousseau ๊ฐ€ ๋” ๋‚˜์€ ์Šคํƒ

์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋ชจ๋ฐ”์ผ ์‚ฌํŒŒ๋ฆฌ / ์‚ฌํŒŒ๋ฆฌ์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

@wardpeet ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
Safari ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” iPhone์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋•Œ๋•Œ๋กœ ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง„ํ–‰ ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๋” ๋‚˜์€ ์Šคํƒ ์ถ”์ ์€ ์–ด์จŒ๋“  ํ•ด๋ฅผ ๋ผ์น  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
85 %์˜ ๋ชจ๋ฐ”์ผ ์‚ฌํŒŒ๋ฆฌ, 10 %์˜ ์‚ฌํŒŒ๋ฆฌ, 5 %์˜ ํฌ๋กฌ ๋ชจ๋ฐ”์ผ iOS์—์„œ 124 ๋ฒˆ๋งŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฒ„์ „.
๋˜ํ•œ URL์ด ํ•ญ์ƒ / ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ Bugsnag ๊ณ„์ •์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋„ ๊ฐ™์€ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ํ˜ผ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

ํžˆ์•ผ!

์ด ๋ฌธ์ œ๋Š” ์กฐ์šฉํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌด์‹œ ๋ฌด์‹œํ•œ ์กฐ์šฉํ•จ. ๐Ÿ‘ป

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ˜„์žฌ 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ์ง€ 20 ์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ์—ด๋ ค๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋‹ต์žฅ ํ•ด์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์—ด์–ด๋‘๊ธฐ ์œ„ํ•ด "๋ถ€์‹คํ•˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ Pull Request๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR ์—ด๊ธฐ, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” gatsby.dev/contribute ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

Gatsby ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ผ์›์ด๋˜์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿ’œ

๋˜ ์•ˆ๋…•!

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚œ ์ง€ 30 ์ผ์ด ์ง€๋‚ฌ์œผ๋ฏ€๋กœ ์šฐ๋ฆฌ์˜ ์นœ์ ˆํ•œ ์ด์›ƒ ๋กœ๋ด‡ (๋‚˜์•ผ!)์ด ๋ฌธ์„ ๋‹ซ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ €๋Š” ๋กœ๋ด‡ ์ผ ๋ฟ์ด๋ฏ€๋กœ์ด ๋ฌธ์ œ๋ฅผ ์‹ค์ˆ˜๋กœ ์ข…๋ฃŒํ–ˆ๋‹ค๋ฉด HUMAN_EMOTION_SORRY ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฑฐ ๋‚˜ ๋‹ค๋ฅธ ๊ฒƒ์ด ํ•„์š”ํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.
์ด ๋ฌธ์ œ ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ Pull Request๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR ์—ด๊ธฐ, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” gatsby.dev/contribute ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

Gatsby ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•ด ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿ’œ

๊ฐ™์€ ๊ฒƒ์„ ๋ณธ๋‹ค.

  • ํ•ฉ๋ฆฌ์ ์œผ๋กœ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (๋งค์ผ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๊ฑฐ์˜ ๋ชจ๋“  ๋ชจ๋ฐ”์ผ ์‚ฌํŒŒ๋ฆฌ ๋˜๋Š” ์‚ฌํŒŒ๋ฆฌ.
  • ๊ฑฐ์˜ ํ•ญ์ƒ / ์ด์ง€๋งŒ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Sentry๋Š” Bugsnag์™€ ๋™์ผํ•œ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒ์ƒ‰ ๊ฒฝ๋กœ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    Screenshot 2020-03-02 at 17 42 54

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. / index ์ด์™ธ์˜ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ.
image

์žฅ์น˜
๋ธŒ๋žœ๋“œ | ํ™”์›จ์ด
๊ฐ€์กฑ | DRA-LX5

OS
์ด๋ฆ„ | ๊ธฐ๊ณ„์  ์ธ์กฐ ์ธ๊ฐ„
๋ฒ„์ „ | 8.1.0

๋ธŒ๋ผ์šฐ์ €
์ด๋ฆ„ | Chrome ๋ชจ๋ฐ”์ผ WebView
๋ฒ„์ „ | 70.0.3538

SDK
์ด๋ฆ„ | sentry.javascript.browser
๋ฒ„์ „ | 5.12.1

ํžˆ์•ผ!

์ด ๋ฌธ์ œ๋Š” ์กฐ์šฉํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋ฌด์‹œ ๋ฌด์‹œํ•œ ์กฐ์šฉํ•จ. ๐Ÿ‘ป

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ˜„์žฌ 30 ์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ ์ง€ 20 ์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ์—ด๋ ค๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋‹ต์žฅ ํ•ด์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ์—ด์–ด๋‘๊ธฐ ์œ„ํ•ด "๋ถ€์‹คํ•˜์ง€ ์•Š์Œ"์ด๋ผ๋Š” ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ Pull Request๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PR ์—ด๊ธฐ, ๋ฌธ์ œ ๋ถ„๋ฅ˜ ๋ฐ ๊ธฐ์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋Š” gatsby.dev/contribute ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค!

Gatsby ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ผ์›์ด๋˜์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿ’œ

์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. gatsby develop ์€ (๋Š”) ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ gatsby build ์ธํ•ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด "์˜ค๋ฅ˜ : ํŽ˜์ด์ง€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ / ์ฐพ์„ ์ˆ˜ ์—†์Œ. ๋ฐ˜์‘์„ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Œ"๊ณผ ํ•จ๊ป˜ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ž์ฒด๊ฐ€ ์„ฑ๊ณตํ•˜๋”๋ผ๋„ ๋Ÿฐํƒ€์ž„์—.

Typescript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์ผ๊นŒ์š”?

gatsby clean ์‹คํ–‰์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค

์—…๋ฐ์ดํŠธ / ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ… : ".env.production"ํŒŒ์ผ์ด ์•„๋‹Œ ".env.development"ํŒŒ์ผ ๋งŒ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ ์ด๊ฒƒ์ด ๋ชจํ˜ธํ•˜๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ค๊ณ  React๊ฐ€ ๋ Œ๋”๋งํ•˜์ง€ ๋ชปํ•˜๊ฒŒํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ด gatsby develop ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋™์ž‘๊ณผ ๋™์ผํ•œ ๋™์ž‘์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. gatsby develop ์‹คํ–‰ํ•˜๊ณ  .env.development ํŒŒ์ผ์ด ์—†์œผ๋ฉด React๋Š” ์—ฌ์ „ํžˆ ๋ Œ๋”๋ง๋˜์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฐ’์ด ๋ˆ„๋ฝ๋˜์–ด ๋‚ด ์•ฑ์ด ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์€ AWS์—์„œ ํ˜ธ์ŠคํŒ…๋˜๊ณ  Cloudfront๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ชจ๋“  URL์„ ์ƒํƒœ๊ฐ€ 200 ์ธ 404.html ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ์ •์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•˜๊ฒŒ ๋ณด์ด์ง€๋งŒ ์šฐ๋ฆฌ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์— ์ •๋ง ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ my-test-site.com/some-not-existed-page window.pagePath ๊ฒƒ์„ ์ž…๋ ฅํ•˜๋ฉด /404.html ์ด๋˜์ง€๋งŒ publicLoader.loadPage somewhy๋Š” 404.html ์•„๋‹Œ๋กœ๋“œํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์ฝ˜ํ…์ธ ์ด์ง€๋งŒ /my-test-site.com/some-not-existed-page . ์‹ค์ œ๋กœ window.location.pathname ํ•˜์ง€๋งŒ window.pagePath ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ Sentry์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. React๋ฅผ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Œ

Screenshot 2020-04-08 12 10 12

์ด ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” pages/index.js ํŒŒ์ผ์—์„œ ์ž์‹ ์˜ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•ด ๋ช…๋ช… ๋œ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์žฌํ˜„ ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ
import Layout from "../components/Layout"; โœ…
import { Layout } from "../components"; ๐Ÿšซ

components/index.js ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

import Layout from "./Layout"

export {
  Layout
};

์ด๊ฒƒ์€ MacOS catelina & chrome ๋ฒ„์ „ 80.0.3987.149์ž…๋‹ˆ๋‹ค.
"gatsby": "^2.20.13",

์ฃผ๋ชฉํ•  ์ ์€ ๋‚ด๊ฐ€ expo gatsby ๋ณ€ํ˜•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊นจ๋—ํ•œ gatsby build ์‹คํ–‰ํ•  ๋•Œ๋„์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๊ทผ๋ณธ ์›์ธ์€ acorn ํŒจํ‚ค์ง€ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋‚ด package.json์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์—ˆ์Šต๋‹ˆ๋‹ค (https://snyk.io/vuln/npm ์ฐธ์กฐ). :๋„ํ† ๋ฆฌ):

"resolutions": {
   "acorn": "^7.1.1"
}

์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

gatsby info ์ถœ๋ ฅ :

  System:
    OS: macOS 10.15.4
    CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.10.0 - /usr/local/bin/node
    Yarn: 1.22.4 - ~/.yarn/bin/yarn
    npm: 6.14.4 - /usr/local/bin/npm
  Languages:
    Python: 2.7.17 - /usr/local/bin/python
  Browsers:
    Chrome: 81.0.4044.92
    Safari: 13.1
  npmPackages:
    gatsby: 2.20.20 => 2.20.20 
    gatsby-plugin-material-ui: 2.1.6 => 2.1.6 
    gatsby-source-graphql: 2.4.0 => 2.4.0 

์—ฌ์ „ํžˆ ๋งŽ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค (์ง€๋‚œ ์ฃผ ๋™์•ˆ 4,500 ํšŒ ์ด์ƒ) :

Capture d'eฬcran 2020-04-15 12 08 53

๋ชจ๋ฐ”์ผ Safari์˜ Stacktrace :

.cache/production-app.js:128:12

126  publicLoader.loadPage(browserLoc.pathname).then(page => {
127  ย  if (!page || page.status === PageResourceStatus.Error) {
128  ย    throw new Error(
129        `page resources for ${browserLoc.pathname} not found. Not rendering React`
130      )
131  ย  }

Chrome Mobile์˜ Stacktrace :

/app-ac76ae7860adc4ef4414.js:1:179819

๋นต ๋ถ€์Šค๋Ÿฌ๊ธฐ:

์‹œ๊ฐ„ | ์œ ํ˜• | ์˜ค๋ฅ˜ | ์ •๋ณด
-| -| -| -
4ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/app-data.json
5ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/index/page-data.json
6ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/app-data.json
7ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/index/page-data.json
10ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/app-data.json
10ms ์ „ | ์š”์ฒญ | XMLHttpRequest ์˜ค๋ฅ˜ | GET /page-data/index/page-data.json

๋Œ€๋ถ€๋ถ„์€ Mobile Safari ๋ฐ Chrome Mobile์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Capture d'eฬcran 2020-04-15 12 15 50

Capture d'eฬcran 2020-04-15 12 16 07

๊ฐœ์ธ ๋น„ ๋ฒ„์ „ : 2.20.13

์ด ์†”๋ฃจ์…˜์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
https://github.com/gatsbyjs/gatsby/issues/11461#issuecomment -459732145

๋‚˜๋Š” gatsby-plugin-offline ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ์›Œ์ปค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์˜คํ”„๋ผ์ธ ์ƒํƒœ์ด๋ฉฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์˜คํ”„๋ผ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋งŽ์ด๋ณด๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

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

  • [๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์˜ˆ์ œ, ์•„๋ž˜ ์ฐธ์กฐ]๋กœ ์ด๋™ํ•˜์—ฌ ์ฝ˜์†”์˜ ์˜ค๋ฅ˜ ๋ฐ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” React๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์™ผ์ชฝ ์ƒ๋‹จ์— ๋กœ๊ณ ๊ฐ€์žˆ๋Š” ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ํ—ค๋”์—์„œ "Research"๋ฅผ ํด๋ฆญํ•˜์—ฌ ์›๋ž˜ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด์ œ ํŽ˜์ด์ง€๊ฐ€ ์ž‘๋™ํ•˜๊ณ  ํŒจ๋„์„ ์ ‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๋””๋ฒ„๊น…ํ•ฉ๋‹ˆ๊นŒ? 404 ๋˜๋Š” ๊ธฐํƒ€ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ์—†์œผ๋ฏ€๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ง€๋งŒ ๋นŒ๋“œ๋Š” Netlify์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  System:
    OS: macOS 10.15.3
    CPU: (4) x64 Intel(R) Core(TM) i5-8210Y CPU @ 1.60GHz
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.16.1 - ~/.nvm/versions/node/v12.16.1/bin/node
    Yarn: 1.22.4 - ~/.yarn/bin/yarn
    npm: 6.14.4 - ~/.nvm/versions/node/v12.16.1/bin/npm
  Languages:
    Python: 2.7.16 - /usr/bin/python
  Browsers:
    Chrome: 81.0.4044.122
    Firefox: 75.0
    Safari: 13.0.5
  npmPackages:
    gatsby: 2.21.1 => 2.21.1
    gatsby-image: 2.4.0 => 2.4.0
    gatsby-plugin-graphql-loader: 1.0.2 => 1.0.2
    gatsby-plugin-module-resolver: 1.0.3 => 1.0.3
    gatsby-plugin-page-creator: 2.3.0 => 2.3.0
    gatsby-plugin-react-helmet: 3.3.0 => 3.3.0
    gatsby-plugin-sharp: 2.6.0 => 2.6.0
    gatsby-plugin-typescript: 2.4.0 => 2.4.0
    gatsby-source-contentful: 2.3.1 => 2.3.1
    gatsby-transformer-remark: 2.8.0 => 2.8.0
    gatsby-transformer-sharp: 2.5.0 => 2.5.0

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ ๋‚ด๋ณด๋‚ด๊ธฐ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์—ˆ๊ณ  ํŽ˜์ด์ง€ ํŒŒ์ผ์—๋„ ์ด๋ฆ„์ด ์ง€์ •๋œ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ํŒŒ์ผ ์™ธ๋ถ€์—์„œ ๋ช…๋ช… ๋œ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ฆ‰์‹œ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •์€ ๊ธฐ๋ณธ ์‹ค์ œ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ํŽ˜์ด์ง€์—์„œ ๋ชจ๋“  ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@thekevinbrown ๊ฐ„ํ—์  ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ

@ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ํŽ˜์ด์ง€์—์„œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ ๊ณ ์น  ๋•Œ๋งˆ๋‹ค

๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ชจํ˜ธํ•œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋Œ€์‹  ๋ช…ํ™•ํ•œ ๋นŒ๋“œ ์˜ค๋ฅ˜๋กœ ๋” ์ข‹์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@thekevinbrown ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋ฌธ์ œ ๊ฐ€์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์•„๋ฌด๋„ ์•ˆ์ •์ ์œผ๋กœ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๊ฐ„ํ—์  ์˜ค๋ฅ˜). ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ์›์ธ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค (๊ณ ๋ง™๊ฒŒ๋„ ๋‹น์‹ ์€ ์‰ฝ๊ฒŒ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค).

prod ์‚ฌ์ดํŠธ์—์„œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ตœ์‹  Gatsby ๋ฒ„์ „ (2 ์ผ ์ „ ์ถœ์‹œ)์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด Safari์˜ ๋ฒ„๊ทธ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  Gatsby ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ํ•จ

๋‚˜๋Š” ์ „์— ์ด๊ฒƒ์„ ๊ฒฝํ—˜ ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ๋งค๋ฒˆ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜์—์„œ๋งŒ ๐Ÿ˜ข
์ด๊ฒƒ์€ 20 ์‹œ๊ฐ„ ์ „ ์—…๋ฐ์ดํŠธ ํ›„์— ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ •๊ธฐ์ ์œผ๋กœ ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์šด๋˜์—ˆ๊ณ  ์–ด๋–ป๊ฒŒ ๋‹ค์‹œ ์ž‘๋™ ์‹œํ‚ฌ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋ฅผ 20 ์‹œ๊ฐ„ ์ „์œผ๋กœ ๋˜๋Œ๋ฆฌ๋ ค ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
8 ์ผ ์ „์œผ๋กœ ๋˜๋Œ๋ ค๋„ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ƒˆ๋กœ์šด ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ ๋œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค : https://vermehrungch-4utm3ymcd.now.sh/Vermehrung/
๊ทธ๋ฆฌ๊ณ  8 ์ผ ์ „์˜ ๋งˆ์ง€๋ง‰ ์ž‘์—… : https://vermehrungch-9l709pu84.now.sh/Vermehrung/

๊ฐœ์ธ ๋น„ ์ข…์†์„ฑ์„ 9 ์ผ ์ „์˜ ์ƒํƒœ๋กœ ๋˜ ๋Œ๋ฆฌ๋ฉด ์ƒˆ๋กœ์šด ๋นŒ๋“œ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค .๐Ÿ˜†

์ด์ œ gatsby ์ข…์†์„ฑ์ด ์›์ธ์„ ๋ถ„๋ฆฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ :

  • ํ™•์‹คํžˆ ๊ฐœ์ธ ๋น„ ์ž์ฒด๊ฐ€ ์›์ธ์ž…๋‹ˆ๋‹ค
  • 2.20.36๊นŒ์ง€ ์ž‘๋™ํ•˜๋Š” ๋ฒ„์ „
  • v2.21.2 ๋ฐ v2.21.3์—๋Š” ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (v2.21.17 ์ด์ „์— ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค).
  • v2.21.0์—๋Š” ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    idb-keyval-iife.min.js:1 Uncaught (in promise) DOMException: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing. at https://vermehrungch.gabriel-software.now.sh/idb-keyval-iife.min.js:1:353 at new Promise (<anonymous>) at https://vermehrungch.gabriel-software.now.sh/idb-keyval-iife.min.js:1:323 at async Object.handle (https://vermehrungch.gabriel-software.now.sh/sw.js:162:21)

์—…๋ฐ์ดํŠธ : gatsby v2.21.19์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@barbalex ์‚ฌ์ดํŠธ๋ฅผ ์ €ํฌ์™€ ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋น„๊ณต๊ฐœ ์ธ ๊ฒฝ์šฐ [email protected] ์œผ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด

๋””๋ฒ„๊ทธ ํ•  ๋•Œ ์‚ฌ์ดํŠธ์—์„œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[].concat(function(e) {
                if (Array.isArray(e)) {
                    for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t];
                    return n
                }
                return Array.from(e)
            }(Object.keys(it.propTypes)), ["children"]);

Stacktrace :

TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
    at Module.zJQU (VM54 component---src-pages-vermehrung-js-c3ca1cb1b4686475777d.js:13787)
    at c (webpack-runtime-2b4bd8eda0563b1ea7e6.js:1)

์‚ฌ์ดํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ์ง‘ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Sentry์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Sentry error

์šฐ๋ฆฌ๋Š” ๊ฐœ์ธ ๋น„ ๋ฒ„์ „ "2.21.22"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ v2.20.36์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ :

  • ํ™•์‹คํžˆ ๊ฐœ์ธ ๋น„ ์ž์ฒด๊ฐ€ ์›์ธ์ž…๋‹ˆ๋‹ค
  • 2.20.36๊นŒ์ง€ ์ž‘๋™ํ•˜๋Š” ๋ฒ„์ „
  • v2.21.2 ๋ฐ v2.21.3์—๋Š” ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (v2.21.17 ์ด์ „์— ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค).

2.21.12 ๋ฒ„์ „์ด์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜์—์„œ๋งŒ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ _ ์ •๋ง _ ๋‚˜์˜๋‹ค. ์ด ๋ฒ„๊ทธ์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค.

https://www.voteamerica.com/ ์—์„œ ํ”„๋กœ๋•์…˜์—์„œ ์ด๊ฒƒ์„๋ณด๊ณ 

์ตœ๊ทผ์— ์‚ญ์ œ ๋œ ํ•œ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. https://intergiro.com/legal ์€ ์˜ˆ์ƒ๋Œ€๋กœ ์‚ฌ์šฉ์ž ์ง€์ • 404 ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋ฐ์Šคํฌํ†ฑ Chrome, Gatsby 2.20.8). ํ”„๋กœ๋•์…˜์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” @Kanuny ์˜ ์˜๊ฒฌ์ด ๋‚ด ๋ฌธ์ œ๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. publicLoader.loadPage ์—์„œ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ JSON์„ ๊ฐ€์ ธ ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ์‹ค์ˆ˜๋กœ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ JSON์„ HTML ํŒŒ์ผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋””๋ ‰์…˜์„ ์ˆ˜์ • ํ•œ ํ›„ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ JSON์ด ์ œ๋Œ€๋กœ๋กœ๋“œ๋˜๊ณ  ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฒ„๊ทธ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋‹ค์‹œ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์บ์‹œ ๋‚˜ ๋ฌด์–ธ๊ฐ€์— ๋งํฌ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Firefox ๋ฐ Chrome ์ตœ์‹  ๋ฒ„์ „์˜ 2.22.12 ๋ฒ„์ „์—์„œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์ณ์ฃผ์„ธ์š”!

๊ณ ์ณ์ฃผ์„ธ์š”!

@SoldierCorp ์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ฝ๊ณ  ์ง์ ‘ ์ˆ˜์ • ํ•ด๋ณด์‹ญ์‹œ์˜ค.

@antoinerousseau ๋Š” ๋˜ํ•œ ๋„์›€์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ์ด ๋„์›€์„ ์š”์ฒญํ•˜๊ณ  ๋ฐฉ๋ฒ•์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ๋„์›€์„ ์ œ๊ณตํ•˜๋Š” ๊ณณ์—์„œ ์„œ๋กœ ๋•๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์ด ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@andrzejwp ์˜ˆ, "์ œ๋ฐœ ๊ณ ์ณ์ฃผ์„ธ์š”!"์™€ ๊ฐ™์€

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๊ธฐ์—ฌ์ž๊ฐ€ ๊ทธ๋“ค์„ ๋•๊ณ  OSS ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ํฌ๋งํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์˜ํ–ฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ํ†ต์ฐฐ๋ ฅ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

@antoinerousseau ๋ฌธ์ œ์—์„œ ๋” ์ด์ƒ ์ œ๊ณต๋˜๋Š” ์ •๋ณด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ๋œ ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ๋” ์ด์ƒ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „.

๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์œผ๋ฉฐ ์•„์ง ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ Gatsby์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ๋‹น์‹ ์„ ๊ดด๋กญํžˆ๋Š” ๊ฒฝ์šฐ ์ฃ„์†กํ•˜์ง€๋งŒ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ˜ผ์ž์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์‹œ๊ฐ„์ด์—†๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” gatsby-plugin-ipfs ( gatsby build --prefix-paths && gatsby serve ์‹คํ–‰ํ•˜๋ฉด "Error / page resources for / not found. Not rendering React"๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๋กœ๋ฅผ ์ ‘๋‘์‚ฌ๋กœ ์ง€์ •ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€).
๊ทธ๋Ÿฌ๋‚˜ index.jsx ํŽ˜์ด์ง€์—์„œ ํŽ˜์ด์ง€ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ useStaticQuery ํ›„ํฌ์—์„œ staticQuery๊ฐ€ ํฌํ•จ ๋œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
ํฅ๋ฏธ๋กญ๊ฒŒ๋„์ด ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ฃผ์„์„ ํ•ด์ œํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด (์‚ฌ์ดํŠธ๊ฐ€ ์ดˆ๊ธฐ ์ƒํƒœ๋กœ ๋Œ์•„ ๊ฐ) ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  "Error / page resources for / not found. Not rendering React"์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์บ์‹œ์— ์ค‘์š”ํ•œ ๊ฒƒ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์ด ์™œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด (๊ฑฐ์นœ) ์ƒ๊ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ •์  ์ฟผ๋ฆฌ๋Š” ํฌํ•จํ•˜์ง€๋งŒ ํŽ˜์ด์ง€ ์ฟผ๋ฆฌ๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ํŽ˜์ด์ง€์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
  • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ์ˆœ์„œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค (์บ์‹ฑ์ด ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—).
  • ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ run static queries ๋˜๋Š” Generating image thumbnails ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์บ์‹œ๋กœ ์ธํ•ด ๊ฑด๋„ˆ ๋›ธ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋‹จ๊ณ„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹ค์ˆ˜๋กœ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ JSON์„ HTML ํŒŒ์ผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๋น„์Šทํ•œ ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ nginx location ์ง€์‹œ์–ด ์ •๊ทœ์‹์€ /page-data/items/page-data.json ์ผ์น˜ํ•˜์ง€ ์•Š์•„์•ผ ํ•  ๋•Œ๋„ ์ผ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ^ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์˜๋„ํ•˜์ง€ ์•Š์€ ์ผ์น˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://www.voteamerica.com/ ์—์„œ ํ”„๋กœ๋•์…˜์—์„œ ์ด๊ฒƒ์„๋ณด๊ณ 

๋˜ํ•œ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ๊ฐœ์ธ ๋น„ ํŒ€, ์•ˆ๋…•ํ•˜์„ธ์š”. loadPage ์—์„œ ๋ฐ˜ํ™˜ ๋œ ์˜ค๋ฅ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?์ด ๋ฌธ์ œ์—์„œ ๋ฐœ์ƒํ•œ ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•จ์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค :

์ด ํ•จ์ˆ˜๋Š” app-data.json , page-data.json ๋ฐ JS ๊ตฌ์„ฑ ์š”์†Œ ์ž์ฒด๋ฅผ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ, ์„œ๋ฒ„ ๊ตฌ์„ฑ ๋ฌธ์ œ, ๊ฐœ๋ฐœ ๋ฌธ์ œ, ๊ตฌ์„ฑ ๋ฌธ์ œ์— ๋งค์šฐ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์ฐธ๊ณ  : ์ €ํฌ ์›น ์‚ฌ์ดํŠธ์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋Š” ์ˆœํ™˜ ๊ฐ€์ ธ ์˜ค๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.)

v2.23.12๋กœ ๋‹ค์‹œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฒฐ๊ณผ : https://vermehrungch-1j64x2olp.vercel.app/Vermehrung

2.20.36 ์ด์ƒ์˜ ๋ชจ๋“  ๋ฒ„์ „์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. gatsby๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ๋œ 5 ๊ฐœ์˜ ์•ฑ๋งˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ทธ ์ดํ›„๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด v3 (https://github.com/gatsbyjs/gatsby/issues/15601)์—์„œ core-js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” libs๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ด์ œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค-์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด.

์ •๋ณด / ํ…Œ์ŠคํŠธ / ๋ฌด์—‡์ด๋“  ๋„์™€ ์ค„ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ๊ธฐ๊บผ์ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@barbalex ์•ฑ์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
image

์ด ์˜ค๋ฅ˜๋ฅผ ๋ถ„๋ช…ํžˆ ๋ณด์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค. PR์„ ์ถ”๊ฐ€ํ•ด๋„๋ฉ๋‹ˆ๋‹ค.์ด ATM์„ ์ˆ˜ํ–‰ ํ•  ๋Œ€์—ญํญ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” lib๊ฐ€ ์„œ๋ฒ„ ์ธก์—์„œ ์‚ฌ์šฉ๋  ๋•Œ react-contextmenu๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค : https://github.com/vkbansal/react-contextmenu/issues/284 , ์ด๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ์ค‘์— ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ฟก๋ฟก

PR์„ ์ถ”๊ฐ€ํ•ด๋„๋ฉ๋‹ˆ๋‹ค.์ด ATM์„ ์ˆ˜ํ–‰ ํ•  ๋Œ€์—ญํญ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํšŒ์ƒ‰ ์„ธํฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ˜ข
์•„๋งˆ๋„ @ b4stien ์€?

2.23.21 ๋ฒ„์ „์—์„œ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ํ•ด๊ฒฐ์ฑ…์„ ์–ป์ง€ ๋ชปํ–ˆ์ง€๋งŒ ์˜ค๋Š˜ ์•„์นจ์— ์ฒ˜์Œ ์œผ๋กœ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ์•Œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ "๊ณ ์น "์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด ์‚ฌ์ดํŠธ๋Š” "Cloudways"๋ผ๋Š” ๊ณต๊ธ‰์ž๋ฅผ ํ†ตํ•ด AWS์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค.

์ดˆ๊ธฐ ํ…Œ์ŠคํŠธ๋กœ Netlify์— ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ฝ๊ฐ„ ํŒŒํ—ค์ณ ๋ณธ ํ›„ "Varnish"๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„ ์ธก ์บ์‹œ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋จผ์ € "์ œ๊ฑฐ"ํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํšจ๊ณผ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์‚ฌ์ดํŠธ๋Š” ์ •๊ธฐ์  ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด์ด ํ™˜๊ฒฝ์—์„œ ์•ฝ 18 ๊ฐœ์›” ๋™์•ˆ ์ž˜ ์กด์žฌํ–ˆ์œผ๋ฉฐ,์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์€ ์ด๋ฒˆ์ด ์ฒ˜์Œ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ๋‹ค์Œ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
Gatsby CLI ๋ฒ„์ „ : 2.12.59

์ด๊ฒƒ์ด ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ˜ธ์ŠคํŒ… ์ธก๋ฉด์— ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค๋ฉด.

๋ฐ”๋ผ๊ฑด๋Œ€ ์ด๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿคท

ํŽธ์ง‘ํ•˜๋‹ค:

"๊ด‘ํƒ"์บ์‹œ๋ฅผ ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ–ˆ์„ ๋•Œ 5 ๋ถ„ ์ด๋‚ด์— ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€์ด ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ /pages ํด๋”์—์„œ ์ƒ์„ฑ ๋œ ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ createPages ์ƒ์„ฑ ๋œ ๋‚˜๋จธ์ง€ ํŽ˜์ด์ง€๋Š” ๋ฐ˜์‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” ์ง€์—ญ ๋ฐ CI ๋ชจ๋‘์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ createPages ์ƒ์„ฑ ๋œ ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ /${locale}/ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตญ์ œํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ createPages ์ƒ์„ฑ ๋œ ๋ชจ๋“  ํŽ˜์ด์ง€๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ /${locale}/ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตญ์ œํ™”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๋˜ํ•œ ๋งŽ์€ ๋กœ์ผ€์ผ๋กœ์ด ์„ค์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@kdichev ์•„๋‹ˆ์š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. gatsby ํŒ€์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ˆ˜์ค€์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊บผ์ด PR์„ ๋งŒ๋“ค ๊ฒ ์ง€๋งŒ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์ฐพ์•„ ๋‚ด๋ฉด ์ข‹์„๊นŒ์š”?

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” IE11์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๋•์…˜์—์„œ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
image

"gatsby": "^ 2.23.11"

๋˜ํ•œ IE11์˜ ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ๊ณต๋ฐฑ (์ˆ˜ํ™” ์—†์Œ) ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
ํŽ˜์ด์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘์„ ๋ Œ๋”๋งํ•˜์ง€ ์•Š์Œ

๊ฐœ์ธ ๋น„ v2.24.2

ํŽธ์ง‘ : ์ด์ „ ๊ธฐ๋Šฅ ๋ฒ„์ „ v2.22.11๋กœ ๋˜๋Œ ๋ ธ์Šต๋‹ˆ๋‹ค. ie11์€ ํ•ด๋‹น ์ปค๋ฐ‹์—์„œ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ์ง€๊ธˆ๋„ ์ž‘๋™ํ–ˆ์ง€๋งŒ package-lock.json ๋ฐ npm ci๋ฅผ ์œ ์ง€ํ•  ๋•Œ๋งŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋“  ์ด๊ฒƒ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ด€๋ จ ๋  ์ˆ˜์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ๋‹ค์šด ์ŠคํŠธ๋ฆผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋‚˜์—ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
(์ž‘๋™ํ•˜๋Š” ๋ฒ„์ „-> ์‹คํŒจํ•œ ๋นŒ๋“œ ๋ฒ„์ „)
ie11 ์‹คํŒจ์˜ ํ›„๋ณด๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฐ ๊ฒƒ :
@ babel / core 7.10.0-> 7.10.5
@ core / js 2.6.11-> 3.6.5
gatsby-legacy-polyfills ์ƒˆ๋กœ์šด dep 0.0.2

๊ธฐํƒ€ ๋œ ๊ฐ€๋Šฅ์„ฑ :
@ graphql-tools / schema ์ƒˆ๋กœ์šด dep 6.0.14
@ graphql-tools / utils ์ƒˆ๋กœ์šด dep 6.0.14
๊ทธ๋Ÿฐ ๋‹ค์Œ vscode diff ๋„๊ตฌ์—์„œ ๋ชจ๋“  ๋นจ๊ฐ•-> ๋ชจ๋“  ๋…น์ƒ‰์„ ์„ ๋ณ„ํ•˜๋Š” ์ธ๋‚ด์‹ฌ์ด ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ธฐํƒ€ ์ฐธ๊ณ  ์‚ฌํ•ญ : gatsby build && gatsby serve -H 0.0.0.0 ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•˜์—ฌ ์„œ๋ฒ„ ํ™˜๊ฒฝ ๊ด€๋ จ ํ•ญ๋ชฉ์„ ๋ฐฐ์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ 2 : ๋‚ด ๊ฒŒ์‹œ๋ฌผ์—์„œ ์ฒ˜์Œ๋ณด๊ณ  ๋œ fauly v2.24.2 ๋นŒ๋“œ์˜ ๋นŒ๋“œ ์ถœ๋ ฅ์ด 10mb์—์„œ 30mb๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 20 ๊ฐœ์˜ app- {hash} .js ๋ฒ„์ „, 2 ๊ฐœ์˜ commons- {hash} .js ๋ฐ ๋‹ค์–‘ํ•œ ์ˆ˜์˜ pages.js๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ํŒŒ์ผ์ด ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ด์ „ ๋นŒ๋“œ์™€ ์ผ์น˜ํ•˜๋„๋ก ๋‚ ์งœ๊ฐ€ ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ gatsby ๋นŒ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ด์ „ ๋ฒ„์ „์„ ํ™•๋ณดํ•˜๊ณ  / public์— ๋„ฃ์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@roffelsaurus 2.23.22 ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
2.24.2๋Š” ci / cd cypress ํ…Œ์ŠคํŠธ์—์„œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฌ๋“ ์ง€ ์ €์žฅ์†Œ๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” repo์™€ vars๋ฅผ ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ๋‹ค๋ฉด konstantin์œผ๋กœ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”. [email protected] ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ gh์— ๋‹น์‹ ์„ ์ดˆ๋Œ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

@wardpeet ๋ฌธ์ œ # 25766๊ณผ ๊ด€๋ จ๋œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ ์ €์žฅ์†Œ์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” import ์ฃผ๋ฌธ ๋ฐ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์ฆ‰, react-leaflet )๊ฐ€ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง ํ™˜๊ฒฝ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ „๋‹จ์ง€ ์ž์ฒด๋ณด๋‹ค ๋จผ์ € ์ „๋‹จ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐ€์ ธ ์™”์Šต๋‹ˆ๋‹ค. ์–ด๋””๋ฅผ๋ณด์•„์•ผํ• ์ง€ ์•Œ์•˜์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ๊ณ ์น  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒ์„ฑ ๋œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ( page resources for / not found. Not rendering React )๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ณ  ์„ธ๋ถ€ ์ •๋ณด ๋ถ€์กฑ ๋ฐ ๊ธฐํƒ€ ์˜ค๋ฅ˜๊ฐ€ ๊ทธ๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ๊นŠ์ด ํŒŒํ—ค์ณ ์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์š” ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ : ์–ด๋–ป๊ฒŒ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ? ํฌ๋กฌ์—์„œ ์ข‹์€ ์˜ค๋ž˜๋œ ์ค‘๋‹จ ์  ๋ฐ ๋””๋ฒ„๊น…. gatsby build && gatsby serve ์—์„œ๋Š” ๋ชจ๋“  ์†Œ์Šค ๋งต์ด์žˆ๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๋กœ์ปฌ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์–ด๋–ค ์ฒญํฌ๋ฅผ ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ๋‚ด๋ถ€ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์†Œ ๋Š๋ฆฐ ํ”„๋กœ์„ธ์Šค ์˜€์œผ๋ฏ€๋กœ ํŽ˜์ด์ง€๋ฅผ ๊ณ„์†ํ•ด์„œ ๋‹ค์‹œ๋กœ๋“œ ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์ธ๋‚ด์‹ฌ์„ ๊ฐ€์ง€์‹ญ์‹œ์˜ค. ์ฒญํฌ ์ด๋ฆ„ (์ œ ๊ฒฝ์šฐ์—๋Š” component---src-pages-index-js )๊ณผ ํ• ๋‹น ๋œ ๊ฐ€์ ธ ์˜ค๊ธฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์— ๋“ค์–ด๊ฐ€์„œ ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจ ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์ข…์†์„ฑ์„ ๊ด€์ฐฐํ•˜์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ๊ฐ ๊ฒฝ์šฐ๋งˆ๋‹ค ๋‹ค๋ฅผ ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ๊ณณ์—์„œ๋„ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋งต์€ ๋ฐฐ์—ด์—์„œ ์ผ๋ จ์˜ ์ผ๋ฐ˜์ ์ธ ์•ฝ์† ์ด์ƒ์„ ๋ณด์—ฌ ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ฃผ์ œ์˜ ํ•ต์‹ฌ์€ ์•„๋‹ˆ์ง€๋งŒ ์•„๋ž˜์—์„œ ์ฐพ์€ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‚จ๊ธธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„๋ž˜๋Š” ๋ฆฌ ์•กํŠธ ๋ฆฌํ”Œ๋ฆฟ์—๋งŒ ํ•ด๋‹น ๋˜๋ฉฐ ๋งˆ์ผ๋ฆฌ์ง€๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์›๋ž˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

import { Map, Marker, Popup, TileLayer } from 'react-leaflet'
import "leaflet-control-geocoder/dist/Control.Geocoder"
import L from "leaflet";

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์ด ์ง€๊ธˆ ๋ณด์ด๋Š” ๋ชจ์Šต์ž…๋‹ˆ๋‹ค :

import { Map, Marker, Popup, TileLayer } from 'react-leaflet'
import L from "leaflet";
import "leaflet-control-geocoder/dist/Control.Geocoder"

๋ฌผ๋ก  ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์Œ์— ์™€์•ผํ•˜๋ฏ€๋กœ ์ด๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. react-leaflet (๋‚ด ์ƒ๊ฐ์—) ๋””๋ฒ„๊ทธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๋กœ๋”ฉ ์ˆœ์„œ๊ฐ€ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ๋‚ด ์•ฑ์—์„œ Uncaught (in promise) Error: page resources for /app/ not found. Not rendering React ์„ ๋””๋ฒ„๊น…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” / app /์€ ๋ฐ˜์‘ ์•ฑ์„ ํฌํ•จํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. gatsby develop ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์ง€๋งŒ gatsby serve ๋ฐ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ  ๋œ ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” @barbalex๋„ ๋งŒ๋‚œ react-contextmenu (https://github.com/vkbansal/react-contextmenu/issues/284)์—์„œ ๋ฐœ์ƒ

@rgembalik , ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๋””๋ฒ„๊น… ํ•œ ๋ฐฉ๋ฒ•์€ ๋‚ด ์•ฑ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋นŒ๋“œ๋ฅผ ์ค‘๋‹จํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ์œ„ํ•ด ๋‚˜๋Š” ๋ณต์ œ์กฐ์ฐจ ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์„ผํŠธ๋ฆฌ ์˜ค๋ฅ˜๋ณด๊ณ ์—์„œ ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์–ด๋–ป๊ฒŒ ์•Œ์•„๋‚ผ ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค

Sentry์—์„œ๋Š” "/"์ด์™ธ์˜ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋„ ๋ณต์ œ ํ•  ์ˆ˜์—†๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ Sentry์—์„œ ๋งŽ์ด ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Netlify์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌํ•˜๋Š” ๋™์•ˆ ํ™œ์„ฑ ์„ธ์…˜๊ณผ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ™•์ธํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

@wardpeet ์€์ด ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ž ์žฌ์  ์›์ธ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Sentry ๋กœ๊ทธ์—์„œ๋งŒ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๋” ์„ธ๋ถ„ํ™” ๋œ ์—ฌ๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ์›์ธ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ์ผ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

https://www.gatsbyjs.com/ ์—์„œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋นˆ ํŽ˜์ด์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
image

์ฒ˜์Œ ํŽ˜์ด์ง€๋ฅผ๋กœ๋“œ ํ•  ๋•Œ gatsbyjs.com์—์„œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” Gatsby๊ฐ€ ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ๋กœ URL ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ด ํŽ˜์ด์ง€์— ์•ก์„ธ์Šคํ•˜๋ฉด SVG๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ (์˜ˆ : https://rocketseat.com.br/test)๋กœ ์ด๋™ ํ•˜๋ฉด ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ ์ฝ”๋“œ (SVG ๋Œ€์‹  gatsby-image ์‚ฌ์šฉ)๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ์ฝ˜์†”์—์ด ๋ฉ”์‹œ์ง€ :

Error: page resources for /test not found. Not rendering React

[email protected]์„ ์‚ฌ์šฉ

_ ํŽธ์ง‘ : ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์—ฌ๊ธฐ์— ๋‚ด ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ ํ•œ ํ›„ ์ด๋ฏธ์ง€ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ํŽ˜์ด์ง€ ์ฝ˜์†”์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค _

๋ณต์ œํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์„ผํŠธ๋ฆฌ ์˜ค๋ฅ˜๋ณด๊ณ ์— ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@theskillwithin- ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์„ผํŠธ๋ฆฌ์—์žˆ๋Š” ์ˆ˜์ฒœ ๊ฐœ.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ์ด์ƒํ•œ. ์ด ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๋‹ค์–‘ํ•œ ์›์ธ์ด์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ์ด ์˜ค๋ฅ˜๋Š” ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์™€ ๋‹ค์–‘ํ•œ ํŽ˜์ด์ง€์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ ํ•œ ๊ฐ€๋Šฅํ•œ ์›์ธ ์ค‘ ์–ด๋–ค ๊ฒƒ๊ณผ๋„ ์šฐ๋ฆฌ์˜ ์ƒํ™ฉ์„ ์—ฐ๊ด€์‹œํ‚ฌ ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ณต์ œ ํ•  ์ˆ˜์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋œ ์›น ์‚ฌ์ดํŠธ์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์„ผํŠธ๋ฆฌ์— ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €
๊ฐœ์ธ ๋น„ ๋ฒ„์ „ 2.24.3

์ด๊ฒƒ๋“ค์€ ๋‚ด๊ฐ€ Sentry๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์žˆ๋Š” ํ”„๋กœ๋•์…˜ ์‚ฌ์ดํŠธ์—์„œ๋„ ์ž์ฃผ๋ณด๊ณ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์„ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณด๋Š” ๋ฐฉ์‹์€ ๋” ๋‚˜์€๋ณด๊ณ ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ์ด ํ•œ ์ ์€ ์‹ค์ œ๋กœ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
image

200 ์ƒํƒœ์™€ AFAICT๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ json์ด ์ž˜๋ชป๋œ ํ˜•์‹์ด ์•„๋‹ˆ๋ฏ€๋กœ fetchPageDataJson() ๊ฐ€ ์„ฑ๊ณต ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby/blob/90e66c7fcdc7a75185bdaa336b0f9bdec9762585/packages/gatsby/cache-dir/loader.js#L137 -L151

์ด ์ •๋„๋ฉด ์„ฑ๊ณตํ•œ ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ๋‹ค์Œ์œผ๋กœ ๋ณผ ์ˆ˜์žˆ๋Š” ์‹คํŒจ ์ง€์ ์€ ๊ตฌ์„ฑ ์š”์†Œ ์ž์ฒด๋ฅผ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby/blob/90e66c7fcdc7a75185bdaa336b0f9bdec9762585/packages/gatsby/cache-dir/loader.js#L438 -L448
https://github.com/gatsbyjs/gatsby/blob/90e66c7fcdc7a75185bdaa336b0f9bdec9762585/packages/gatsby/cache-dir/loader.js#L235 -L241

์ž‘์„ฑ์ค‘์ธ async-requires ์— ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Webpack์—์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ๊ฐ„ํ—์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์ž‘์„ฑ๋˜๋Š” ๋ฐฉ์‹์— ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ํญํŒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ˜์ž…๋˜๋Š” ๋ชจ๋“ˆ์˜ ์–ด๋”˜๊ฐ€์—์„œ ์ผ์ข…์˜ ๊ตฌ๋ฌธ ๋ฌธ์ œ ์˜€๋‹ค๋ฉด 100 % ์‹คํŒจ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ชจ๋“ˆ์„๋กœ๋“œํ•˜๋Š” ์žฅ์น˜ / ๋ธŒ๋ผ์šฐ์ €์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉ์ค‘์ธ ๊ฒƒ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์˜ค๋ฅ˜๊ฐ€ ๋ชจํ˜ธ ํ•ด์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ™•์‹คํžˆ ๋งํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ์ƒ์„ฑ ๋œ ์˜ค๋ฅ˜๋ฅผ ๋จน์ง€ ์•Š๋Š” ์ปดํฌ๋„ŒํŠธ ๋กœ๋”์ž…๋‹ˆ๋‹ค.

๊ฐ–๋Š” Promise.resolve() ๋ฉ์–ด๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”์ด ๋•Œ asyncRequires ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„ ๋˜์ ธ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์˜ค๋ฅ˜๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธ ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์›์ธ์„ ์‰ฝ๊ฒŒ ์ถ”์  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

catch ๋ธ”๋ก์—์„œ null ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๊ฐ€ ์˜๋ฏธ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์„ ์ฐพ์•˜์ง€๋งŒ ๋™์  ๊ฐ€์ ธ ์˜ค๊ธฐ ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์›นํŒฉ์ด ๋™์  ๊ฐ€์ ธ ์˜ค๊ธฐ์˜ catch() ๋ธ”๋ก์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ Webpack์œผ๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ฌธ์ œ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. devtools์—์„œ ์ž˜๋ชป๋œ import() ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€๋ณด๊ณ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ ์˜ค๋Š” ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ ํ•  ์ˆ˜ ์—†์Œ / ์‹คํŒจ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€๋ณด๊ณ ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ์ด๋ฉฐ ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@wardpeet ์ด์ „์— ๋” ๋‚˜์€ ์˜ค๋ฅ˜๋ณด๊ณ ๋ฅผ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ž‘์—… ์ค‘์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?


๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ๋Œ€๋ถ€๋ถ„ ๋ชจ๋ฐ”์ผ ์žฅ์น˜์—์„œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ตœ๊ทผAndroid์—์„œ ํฌ๋กฌ ํฌํ•จ
! [์ด๋ฏธ์ง€] (https://user-images.githubusercontent.com/1935258/90704484-4f97ac80-e22c-11ea-8d53-505c93f32953.png)! [์ด๋ฏธ์ง€] (https://user-images.githubusercontent.com/1935258/90704528-70f89880-e22c-11ea-907f-9f8c6fb61818.png)

๊ทธ๋Ÿฌ๋‚˜ Safari๋ฅผ ์‚ฌ์šฉํ•˜๋Š” MacOS X์™€ โ€‹โ€‹Chrome์„ ์‚ฌ์šฉํ•˜๋Š” Windows 10์—์„œ๋„ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

! [์ด๋ฏธ์ง€] (https://user-images.githubusercontent.com/1935258/90705120-e0bb5300-e22d-11ea-9f3e-31ba064cbdd8.png)! [์ด๋ฏธ์ง€] (https://user-images.githubusercontent.com/1935258/90705144-efa20580-e22d-11ea-965a-e036612a8f70.png)

ํ•œ ๊ฐ€์ง€ ๊ณตํ†ต์ ์€ ํŠธ๋ž˜ํ”ฝ์ด ์ผ๋ฐ˜์ ์œผ๋กœ Facebook ๋˜๋Š” Google์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์šฐ์—ฐ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ๋“ค์ด ์šฐ๋ฆฌ ํŠธ๋ž˜ํ”ฝ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ด๋Œ ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


_ ์ฐธ๊ณ  : ์ œ๊ฐ€ ํ•จ๊ป˜ ์ผํ•˜๊ณ ์žˆ๋Š”์ด ์‚ฌ์ดํŠธ๋Š” ์‹ค์ œ๋กœ [email protected] ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋งํฌ ํ•œ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ์ง€๋งŒ ๋กœ์ง ์ž์ฒด๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™์€ ์ผ์„ํ•˜๊ณ  ์žˆ๊ณ , ์ œ๊ฐ€ ํ™•์ธํ•œ ์ž ์žฌ์  ์ธ ์‹คํŒจ ์ง€์ ์€ ๋˜‘๊ฐ™์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ._

๋˜ํ•œ bugsnag์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @wardpeet ๋„์›€์ด ๋œ๋‹ค๋ฉด bugsnag ์— ๋Œ€ํ•œ ์Šคํƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํฅ๋ฏธ๋กญ๊ฒŒ๋„์ด ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๋ฒˆ ์žฌ

Screen Shot 2020-09-15 at 10 33 04 PM

๋กœ๊น… ๋œ ์˜ค๋ฅ˜์— ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/issues/26706์— ๊ฒŒ์‹œ ๋œ ๋‹ค๋ฅธ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•œ ํŽ˜์ด์ง€์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” (์ ์–ด๋„) ๋ฐ์Šคํฌํ†ฑ ํฌ๋กฌ์—์„œ ๋ฐœ์ƒํ•˜๋ฉฐ ํŽ˜์ด์ง€๋ฅผ ์ฒ˜์Œ๋กœ๋“œ ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ ๊ณ ์นจ์„ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ incognito ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ์บ์‹œ๋ฅผ ์ง€์šฐ๋ ค๊ณ ํ•ด๋„ ์ฒ˜์Œ์œผ๋กœ ๋ณต์ œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉด ์ž ์‹œ ํ›„๊นŒ์ง€ (๋•Œ๋กœ๋Š” ๋งค์šฐ ๋ฌด์ž‘์œ„๋กœ) ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (๋•Œ๋กœ๋Š” ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค). ๋ฉฐ์น ) URL์„ ๋ฐฉ๋ฌธํ•˜์—ฌ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค (๋‹ค์‹œ ์ƒˆ๋กœ ๊ณ ์นจํ•˜๋ฉด ์‚ฌ๋ผ์ง).

์œ„์˜ ๋งํฌ ๋œ ๋ฌธ์ œ์— ์‚ฌ์šฉํ•œ ๋™์ผํ•œ ์ตœ์†Œ ์ €์žฅ์†Œ๋กœ ๋ณต์ œํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค (์ ์–ด๋„ ์ง€๊ธˆ ์‹œ๋„ํ•œ ์‹œ๊ฐ„์€ ์•„๋‹˜).

์˜ค๋ฅ˜๋Š” (์ด ๊ฒฝ์šฐ) ์„์กฐ ๊ฒฉ์ž๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€ ์ƒˆ๋กœ ๊ณ ์นจ์„ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š” ํ•œ ํŽ˜์ด์ง€๋ฅผ ํŒŒ๊ดดํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์˜์‹ฌ๋ฉ๋‹ˆ๋‹ค)

์‚ฌ์‹ค ๋„ˆ๋ฌด ๋ฌด์ž‘์œ„๋กœ ๋Š๊ปด์ ธ์„œ ๋ช‡ ์ฃผ ๋™์•ˆ ๋ณธ ์ ์ด ์žˆ์ง€๋งŒ ํ•ญ์ƒ ๋‚ด PC์— ๋ญ”๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค

npm auidit fix ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜ํ–‰์›! ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•,

ํ”„๋กœ๋•์…˜์—์„œ๋งŒ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • URL์˜ ๊ฒฝ์šฐ์ด ๋ฒ„๊ทธ๋ฅผ 100 % ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. public ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  icons
  page-data
  usages
    brainstorming
      page-data.json
    seminaries
      page-data.json

์ด๋Ÿฌํ•œ URL์„ https://domain.com/usages/brainstorming ์ž…๋ ฅํ•˜๋ฉด https://domain.com/usages/seminaries ๋„ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. https://domain.com/doesnotexist ์™€ ๊ฐ™์€ ์•Œ ์ˆ˜์—†๋Š” URL์„ ์ž…๋ ฅํ•˜๋ฉด ๋‹น์—ฐํžˆ 404 ํŽ˜์ด์ง€๊ฐ€ ์žˆ์ง€๋งŒ https://domain.com/usages ์™€ ๊ฐ™์ด ํŠธ๋ฆฌ์˜ ์‹ค์ œ ํด๋”์™€ ์ผ์น˜ํ•˜๋Š” URL์— ๋„๋‹ฌํ•˜๋ ค๊ณ ํ•˜๋ฉด์ด ๋นˆ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ์ด ์˜ค๋ฅ˜.

๋‹น์‹ ์—๊ฒŒ ์ข…์„ ์šธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฒ ์ŠคํŠธ

@guillaumepotier ๋„ˆ๋„ nginx๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ ๊นŒ?

์ž˜๋ชป๋œ ์‘๋‹ต ํ—ค๋”๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@ daydream05 ์˜ˆ, ์‹ค์ œ๋กœ ์šฐ๋ฆฌ๋Š” nginx๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ฝ˜ํ…์ธ  ํ—ค๋” 304 ๊ฐœ์™€ ์‘๋‹ต 200 ๊ฐœ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

AWS S3 ๋ฒ„ํ‚ท ์‚ฌ์šฉ

AWS S3์—์„œ ํ˜ธ์ŠคํŒ… (CloudFront CDN ์‚ฌ์šฉ)๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

npm audit fix ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์žฌ๋ฏธ์žˆ๋Š” @ liuuuk311. ๋‚˜๋Š” ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ์•„๋งˆ๋„ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์•Œ๋ ค ์ฃผ๊ฒ ์ง€ ๋งŒ ์ง€๊ธˆ๊นŒ์ง€ 48 ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋กœ๊ทธ์— ๋ฐœ์ƒ์ด ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : 5 ์ผ ํ›„, ์—ฌ์ „ํžˆ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ...

ํŽธ์ง‘ : 10 ์ผ ํ›„ ๋‹ค์‹œ ๋ช‡ ๋ฒˆ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.๋ณด๊ณ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. npm audit fix ์‹คํ–‰ํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@wardpeet ์ง„๋‹จ์— ๋„์›€์ด ๋  ์ˆ˜์žˆ๋Š” ์ถ”๊ฐ€ ๋ฒ„๊ทธ ์Šค๋‚ด๊ทธ ๋ฐ์ดํ„ฐ ...

์ด๊ฒƒ์— ๋”ฐ๋ฅด๋ฉด page-data.json ํŒŒ์ผ์ด ์‹ค์ œ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค ...

Screen Shot 2020-10-02 at 10 46 07 AM
Screen Shot 2020-10-02 at 10 45 35 AM
Screen Shot 2020-10-02 at 10 45 30 AM

  • ์˜ค๋Š˜์ด ์ผ์„ ๋‹นํ™ฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ๋ถ€๋”ช ํžˆ๊ณ  * ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ๊ฒฝ์šฐ์—๋Š” polyfill.io lib๋ฅผ ํŽ˜์ด์ง€์—๋กœ๋“œํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

<script src="https://polyfill.io/v3/polyfill.min.js?version=3.52.1"></script>

@pedrofsantoscom ์ •์ ์œผ๋กœ๋กœ๋“œ ๋œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ gatsby.js์˜ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์–ด์ œ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ๋กœ์ปฌ์—์„œ ์ง€์šฐ๋ฉด ํ˜„์žฌ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Cloudflare์—์„œ ์บ์‹œ๋ฅผ ์ง€ ์› ๊ณ  ์ด์ œ ๋” ์ด์ƒ ๋ณด๊ณ ์„œ๋ฅผ๋ฐ›์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
์บ์‹œ ์ง€์šฐ๊ธฐ๋Š” ์šฐ๋ฆฌ์˜ ํ•ด๊ฒฐ์ฑ…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

Cloudflare๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  AWS cloudfront CDN์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ ๋ฐฐํฌ ํ›„ ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ๊ฒฐ๊ณผ์ ์ธ ํŽ˜์ด์ง€ ์žฌ๋กœ๋“œ์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ•˜๋ฉด์„œ https๋กœ ๋กœ์ปฌ ์›น ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ๋ฒ„๊ทธ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์ง€๋งŒ ๋งค๋ฒˆ ๊ทธ๋ ‡์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Cloudflare๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  AWS cloudfront CDN์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฐ ๋ฐฐํฌ ํ›„ ๋ฌดํšจํ™”๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ๊ทธ๋ฆฌ๊ณ  ์ผ๋ถ€ ๊ฒฐ๊ณผ์ ์ธ ํŽ˜์ด์ง€ ์žฌ๋กœ๋“œ์—์„œ ์‹คํ–‰์„ ์‹œ๋„ํ•˜๋ฉด์„œ https๋กœ ๋กœ์ปฌ ์›น ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ๋ฒ„๊ทธ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์ง€๋งŒ ๋งค๋ฒˆ ๊ทธ๋ ‡์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํŒจํ„ด์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๋ฅผ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์บ์‹œ๋ฅผ ์ง€ ์› ์„ ๋•Œ ์‹œ๊ฐ„๋‹น ์˜ค๋ฅ˜๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ค„์–ด๋“ค์—ˆ๊ณ  ์ ์–ด๋„ bugsnag์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฐธ์œผ๋กœ ์ด์ƒํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์ง€๋งŒ Internet Explorer์—์„œ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Unhandled promise rejection Error: page resources for / not found. Not rendering React

๋‚ด ๋ฐ˜์‘ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ€์ ธ ์˜ค๊ธฐ๋กœ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” https://sap.github.io/ui5-webcomponents/ ์— ๋Œ€ํ•œ ์ข…์†์„ฑ์ด์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ทผ๋ณธ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช… ํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ๋ฐ˜์‘ ์ปจํŠธ๋กค์˜ ์ข…์†์„ฑ์œผ๋กœ ์ธํ•ด์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

@Chaosbohne ์€ gatsby.js ํŒ€์ด ์ข…์†์„ฑ ๊ด€๋ฆฌ ๋ฐ ๋ณด์•ˆ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ์ข…์†์„ฑ / devDependency ๋ฒ„์ „์—์„œ ^ ์ œ๊ฑฐํ•˜๋ฉด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Sentry ๋กœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Chrome ๋ฐ Safari์™€ Mac์˜ ๋กœ์ปฌ Chrome 85, 86์—์„œ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์†”๋ฃจ์…˜๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @KyleAMathews ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ์šฐ๋ฆฌ๋Š” ์‚ฌ์—…์„ ์žƒ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.์ด ๋ฌธ์ œ๋Š” 3-4 ์ผ ์ด๋‚ด์— ๋ฐœ์ƒํ•˜๋ฉฐ ๊ทผ๋ณธ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋„๋ก ๋„์™€์ฃผ์„ธ์š”.

@ R3coN ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ

@ R3coN ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ž˜ ์ž‘๋™ํ•˜๋Š” ํŒจํ‚ค์ง€ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

    "gatsby": "2.20.36",
    "gatsby-cli": "^2.12.54",
    "gatsby-image": "^2.4.13",
    "gatsby-plugin-exclude": "^1.0.2",
    "gatsby-plugin-google-analytics": "^2.3.11",
    "gatsby-plugin-manifest": "^2.4.18",
    "gatsby-plugin-offline": "^3.2.17",
    "gatsby-plugin-react-helmet": "^3.3.10",
    "gatsby-plugin-react-svg": "^3.0.0",
    "gatsby-plugin-resolve-src": "^2.1.0",
    "gatsby-plugin-sass": "^2.3.12",
    "gatsby-plugin-sharp": "^2.6.19",
    "gatsby-plugin-use-query-params": "^1.0.1",
    "gatsby-source-filesystem": "^2.3.19",
    "gatsby-source-graphql": "^2.6.2",
    "gatsby-transformer-sharp": "^2.5.11",

@ shide1989 ์˜ˆ, ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์žฌ ๊ตฌ์ถ•๋„ 2-3 ์ผ ๋™์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ํ›„ ๋‹ค์‹œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Gatsby CLI ๋ฒ„์ „ : 2.12.67 ๋ฐ Gatsby ๋ฒ„์ „ : 2.24.47์„ ์‚ฌ์šฉ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ๊ฐœ์ธ ๋น„ ๋ฒ„์ „ ์„ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ์šด์„ ์‹œํ—˜ํ•ด ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ shide1989 ๋Œ“๊ธ€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฒ„์ „์„ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.->

WebpackError :์ด StaticQuery์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „ 2.24.47์—์„œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ๋นŒ๋“œ ํƒ€์ž„์— ์ฟผ๋ฆฌ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐ useStaticQuery ํ›„ํฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋™์ผํ•œ ํŒŒ์ผ์— graphql ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์ด ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ๋Œ€๋กœ : https://github.com/gatsbyjs/gatsby/issues/24526)

์–ด์จŒ๋“  ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค

๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ gatsby 2.24.47์—์„œ๋„ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

@ R3coN ์ด ๋ฌธ์ œ๋Š” ๋ถ€์ ์ ˆํ•œ ์ •์  ์บ์‹ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— nginx ๋˜๋Š” s3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  page-data.json์„ ๋ฌดํšจํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค StaticQueries๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๋ชจ๋“  page-data.json์„ ์บ์‹ฑํ•˜๊ณ  ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์„ ์žฌ ๊ฒ€์ฆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

https://www.gatsbyjs.com/docs/caching/

@ daydream05 ๋Œ“๊ธ€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, CloudFront์—์„œ S3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Cloudfront๋กœ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@ daydream05 ์ด๋ฏธ cache-control : 'public, max-age = 0, must-revalidate'๊ฐ€ page-data.json ๋ฐ app-data.json์— ์ถ”๊ฐ€๋˜์–ด ์ด๋Ÿฌํ•œ ํŽ˜์ด์ง€๊ฐ€ ์บ์‹œ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ (404 ํŽ˜์ด์ง€๋ฅผ๋กœ๋“œํ•˜๊ณ  ์ˆ˜ํ™”ํ•ด์•ผ ํ•จ)์—์„œ๋„์ด ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ๋‚ด ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ๋Š”์ด ์˜ค๋ฅ˜์—†์ด ์ž‘๋™ํ•˜๋ฉฐ ๋นŒ๋“œ ๋œ ํ”„๋กœ๋•์…˜ app-[hash].js ์—์„œ ํ•ด๋‹น ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ™•์ธ ์ค‘์— console.log ์‚ฝ์ž…ํ•˜๋ฉด page ๊ฐœ์ฒด๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ์˜ˆ์ƒ๋Œ€๋กœ page.componentChunkName: ""component---src-pages-404-js" ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์•ฑ์ด gatsby ํด๋ผ์šฐ๋“œ์— ๋ฐฐํฌ๋˜๋ฉด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๊ฐ€๋กœ๋“œ ๋  ๋•Œ๋งˆ๋‹ค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. SSR์˜ 404 ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œ๋˜์ง€๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ React๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 404 ํŽ˜์ด์ง€๊ฐ€ ์ง์ ‘๋กœ๋“œ๋˜๋ฉด ( /404 ๊ฒฝ๋กœ๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ) ์˜ค๋ฅ˜์—†์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋กœ์ปฌ์—์„œ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง„๋‹จํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „ ์‚ฌ์šฉ : "gatsby": "^2.24.91"

์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•˜์—ฌ react-md ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ์†ํ•˜๊ฒŒ ์‚ฌ์ดํŠธ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜๊ฑฐ๋‚˜ ์ด๊ฒƒ์ด Gatsby์—์„œ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

react-md ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ๋งค๋ฒˆ ์ œํ’ˆ์„ ๋ฐฐํฌํ•ด์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ํŠน์ • ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ •ํ™•ํžˆ ์ฐพ์•„ ๋‚ด์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๋ฒ”์œ„๋ฅผ ์ขํ˜”์Šต๋‹ˆ๋‹ค.

import Card from "react-md/lib/Cards/Card";
import CardTitle from "react-md/lib/Cards/CardTitle";
import CardText from "react-md/lib/Cards/CardText";
import CardActions from "react-md/lib/Cards/CardActions";
import { TextField, Button, Snackbar } from "react-md";

๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค ์‹œ๊ฐ„ ์ด ์žˆ์œผ๋ฉด

404 ํŽ˜์ด์ง€์™€ ๊ด€๋ จํ•˜์—ฌ ๋™์ผํ•œ ํŒจํ„ด์˜ ํ–‰๋™์ด ์ €์—๊ฒŒ ์ผ์–ด๋‚˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ @aMoniker ์˜ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ๋Š” ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ๋ชจ๋‘ 404 ํŽ˜์ด์ง€์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ Gatsby Cloud์— ๋ฐฐํฌํ•˜๋ฉด ์‹ค์ œ /404 ๊ฒฝ๋กœ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์•Œ ์ˆ˜์—†๋Š” ํŽ˜์ด์ง€์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š” ํ•  ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ์ด๋ฅผ ํ•„์š”๋กœํ•˜์ง€ ์•Š๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@ dejavu1987 ์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— react-md๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@MaciekBaron ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ง€์šฐ๊ณ  ๊ฐ ์ง€์šฐ๊ธฐ ํ›„์— ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•˜์—ฌ ๋กœ์ปฌ์—์„œ ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์บ์‹ฑ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์บ์‹œ ํ—ค๋”๊ฐ€ ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜๋ฉด ์„œ๋น„์Šค ์›Œ์ปค์— ๋ฌธ์ œ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
https://www.npmjs.com/package/gatsby-plugin-remove-serviceworker

์ €๋„์ด ๋ฌธ์ œ์— ๋ถ€๋”ช ํ˜”์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ gatsby ๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์›น ํ˜ธ์ŠคํŒ… ์—…์ฒด์— ๊ณต๊ฐœ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๋ฉด์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ์ธํ•ด ํŽ˜์ด์ง€๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋งค์šฐ ํ˜ธ๊ธฐ์‹ฌ์ด ๋งŽ์•˜๊ณ  ๊ณต๊ฐœ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ํŽ˜์ด์ง€ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ์†Œ๋ฌธ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ๋˜์–ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ๋ฐ›์€ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ ํ›„ ์ฒ˜์Œ์—๋Š” ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ ์ฐŒ๋ฅด๋Š” ์†Œ๋ฆฌ๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์— ํŽ˜์ด์ง€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์—ฌ๊ธฐ์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์บ์‹œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ง„์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ˆ˜์ • ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ ์ค‘์— ์žฌํ˜„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋‚˜ ํ”„๋กœ๋•์…˜์—์„œ๋„ ๋งค๋ฒˆ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฏธ๋ฆฌ๋กœ๋“œ๋˜๊ณ  ๋น„๋™๊ธฐ ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€๋ณธ์˜ ์‹คํ–‰ ์ˆœ์„œ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


3G fast ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ์—์„œ ๋„คํŠธ์›Œํฌ ์†๋„๋ฅผ ๋Šฆ์ถ”๋ฉด ๊ฑฐ์˜ ๋งค๋ฒˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด ์ถ”์ธก์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ถ”์ธก์„ ์ •๋‹นํ™” ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด

exports.onPreRenderHTML = ({ replacePostBodyComponents, getPostBodyComponents }) => {
    const postBodyComponents = getPostBodyComponents()
    postBodyComponents.forEach((component) => {
      if(component.type === 'script' && component.props) {
        delete component.props.async
      }
    })
    replacePostBodyComponents(postBodyComponents)
  }

๋‹คํ–‰ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋น„์˜ ๊ธฐ๋Šฅ์„ ์œ„๋ฐ˜ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋น„๋™๊ธฐ ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐœ๋ฐœ ์ค‘์— ์žฌํ˜„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ๋‚˜ ํ”„๋กœ๋•์…˜์—์„œ๋„ ๋งค๋ฒˆ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฏธ๋ฆฌ๋กœ๋“œ๋˜๊ณ  ๋น„๋™๊ธฐ ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋Œ€๋ณธ์˜ ์‹คํ–‰ ์ˆœ์„œ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋น„์˜ ๊ธฐ๋Šฅ์„ ์œ„๋ฐ˜ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋น„๋™๊ธฐ ์ ์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹น์‹ ์ด ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒํ•œ ์ด์œ ๋กœ ์ธํ•ด์ด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์‹  ๋ฒ„์ „์€ ๊ฑฐ์น ์—ˆ์ง€๋งŒ ๋‹ต๋ณ€์— ์—ฐ๊ฒฐํ•˜๋ฉด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ตœ๊ทผ์— ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ์š”์†Œ์— ๊ธ€๊ผด ์•„์ด์ฝ˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ฃผ๋ชฉํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์ ์€ ๊ธ€๊ผด ์•„์ด์ฝ˜์ด ์ง€๊ธˆ๊นŒ์ง€ ๋‹ค๋ฅธ ๊นŠ์€ ์ค‘์ฒฉ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ํ˜ธ์ถœ ๋œ ์ฒซ ๋ฒˆ์งธ ๊ตฌ์„ฑ ์š”์†Œ ์ธ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์ค€์—์žˆ์„ ๋•Œ๋งŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‹ค์ œ ์›์ธ์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์ข‹์€ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ dejavu1987 ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์›์ธ์„ ํŒŒ์•…ํ•  ์ˆ˜์žˆ๋Š” ์ข‹์€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ œ๊ณตํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ webpack์ด ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ์ฒญํฌ๋กœ ๋ถ„ํ• ํ•˜์ง€๋งŒ ์ฒญํฌ์—๋Š” ์ข…์†์„ฑ์ด์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ async ์Šคํฌ๋ฆฝํŠธ๋ฅผ๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•œ ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ฌธ์ œ๋Š” Gatsby๊ฐ€ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ค‘์— ์˜ค๋ฅ˜๋ฅผ ์‚ผํ‚ค๊ณ  ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ page resources for / not found. Not rendering React ๋ฉ”์‹œ์ง€๋ฅผ๋ณด๊ณ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด์ด ์Šค๋ ˆ๋“œ์—๋ณด๊ณ  ๋œ ๋‹ค์–‘ํ•œ ์ž ์žฌ์  ์›์ธ์ด์žˆ๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ๋Š” Mobx 5๊ฐ€ IE11์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. Mobx๊ฐ€ ์ด์— ๋Œ€ํ•œ ๋ฉ‹์ง„ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋™์•ˆ ๋‚ด๊ฐ€๋ฐ›์€ ๊ฒƒ์€ Gatsby์˜ "ํŽ˜์ด์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฟ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€๋กœ๋“œ ์‹คํŒจ๋ฅผ ์œ ๋ฐœ ํ•œ ์›๋ž˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ๋ณด๊ณ ํ•˜๋Š”์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฒธ์†ํ•˜๊ฒŒ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋ฟก๋ฟก

๋‚˜๋ฅผ ์œ„ํ•ด ๊ณ ์นœ ๊ฒƒ์€ 404 ํŽ˜์ด์ง€์—์„œ 200์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก S3๋ฅผ ์„ค์ •ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 404 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„ค, ์ด๊ฒƒ๋„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ฌธ์ œ๋Š” ๋” ๊ด‘๋ฒ”์œ„ํ–ˆ์Šต๋‹ˆ๋‹ค. Cloudfront 404 ๊ฒฐ๊ณผ์—์„œ ๋ถ€์ ์ ˆํ•˜๊ฒŒ ์บ์‹ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Cloudfront์™€ S3๊ฐ„์— 404 ๊ฒฐ๊ณผ๋ฅผ ์–ป์€ ์ด์œ ๋Š” CodePipeline์„ ํ†ตํ•ด S3์— ๋ฐฐํฌํ•˜๋ฉด Build Artifact ZIP ํŒŒ์ผ์˜ ์••์ถ•์ด ํ’€๋ฆฐ๋‹ค ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํŠน์ • ์ˆœ์„œ๋กœ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ช‡ ๋ถ„ ๋™์•ˆ ์•„์ง์—†๋Š” ์ƒˆ .JS ํŒŒ์ผ (์ƒˆ ํ•ด์‹œ ํฌํ•จ)์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ƒˆ .HTML ํŒŒ์ผ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด์‹œ ๋œ ์ž์‚ฐ ํŒŒ์ผ์— ๋Œ€ํ•œ ์บ์‹ฑ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  404 ๊ฒฐ๊ณผ์— ์บ์‹œํ•˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” CDN ์บ์‹œ๋ฅผ ํ”Œ๋Ÿฌ์‹œํ•ด์•ผ๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ HTML ํŒŒ์ผ์ด S3์— ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฐํฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐ์ด๋น„๋“œ
https://ewebinar.com

2020 ๋…„ 10 ์›” 21 ์ผ ์˜คํ›„ 12์‹œ 40 ๋ถ„์— Vince P. [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@ R3coN https://github.com/R3coN ์ด ๋ฌธ์ œ๋Š” ๋ถ€์ ์ ˆํ•œ ์ •์  ์บ์‹ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์— nginx ๋˜๋Š” s3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  page-data.json์„ ๋ฌดํšจํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค StaticQueries๊ฐ€ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๋ชจ๋“  page-data.json์„ ์บ์‹ฑํ•˜๊ณ  ์žˆ์Œ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์„ ์žฌ ๊ฒ€์ฆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

https://www.gatsbyjs.com/docs/caching/ https://www.gatsbyjs.com/docs/caching/
โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/gatsbyjs/gatsby/issues/19618#issuecomment-713298516 ์—์„œ ๋ณด๊ฑฐ๋‚˜ ํ•˜์„ธ์š” .

PWA ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ์—์„œ Chrome Lighthouse Audit ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ–ˆ๋‹ค๊ณ  ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ํ…Œ์ŠคํŠธ๋Š” ๋„คํŠธ์›Œํฌ ๋ฐ CPU ์ œํ•œ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋น„๋™๊ธฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ๋กœ๋“œ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ 30 ๊ฐœ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” 3D๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ webpack ๋ฐ gatsby.js ๋กœ localhost ์—์„œ๋„ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•˜๋ฉด ์ •์  ๋ชจ๋ธ gtlf ๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ. ๊ทธ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์•ฑ์ด ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (ErrorBoundary๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ).

์—ฌ๊ธฐ์— ๋™์ผํ•œ ํŒจํ„ด์ด์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ ์ ˆํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์— S3 ๋ฐ CloudFront๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ œ ๊ฒฝ์šฐ์—๋Š” Cloudfront์—์„œ๋งŒ ์ฝ˜์†”์—์„œ Can't render React ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜ S3์—์„œ ํŒŒ์ผ์„ ๋ณ€๊ฒฝ ํ•œ ํ›„ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ ์ƒ์‚ฐ ์›์ ์„ ์œ„ํ•ด ๋“ฑ๋Œ€๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ ํ•œ ํ›„ ํ•ด๊ฒฐ ๋œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ผ๋ฐ˜ ๋ชจ๋“œ์˜ ๋‚ด ์žฅ์น˜์—์„œ๋งŒ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” ์ „์ฒด ์บ์‹œ, ์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์„œ๋น„์Šค ์›Œ์ปค๋ฅผ ์ฒญ์†Œํ•˜๋Š” ๊ฒƒ์ด ๋” ์ผ์ฐ ๋„์›€์ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ lighthouse๋กœ ์ œ์ž‘ ์›์ ์„ ํ”„๋กœํŒŒ์ผ ๋งํ•˜๊ณ  ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ œ ๊ฒฝ์šฐ์—๋Š”)

๋‚ด ์š”์ ์€ 10 ๊ฐœ์—์„œ 1 ๊ฐœ ์ •๋„์˜ ๋“ฑ๋Œ€๋กœ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋งˆ์ง€๋ง‰ ๋ฐฐ์น˜๋Š” ์˜ค๋ž˜ ์ „์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐœ์ธ ๋น„๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ผ์–ด๋‚˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ ์ด์œ ๋Š” ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋นˆ ํŽ˜์ด์ง€๊ฐ€ ๋„ˆ๋ฌด ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—”๋“œ ๊ฐœ์ธ ๋น„ ํŽ˜์ด์ง€์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ๋นˆ ํŽ˜์ด์ง€๊ฐ€๋˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ๊ทธ ์˜ค๋ฅ˜๋„ ๋งค๋ฒˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ gatsby ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ์‹ ๋ขฐํ•  ์ˆ˜์žˆ๋Š” ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ ์ „ํ™˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์˜ค๋ฅ˜๋Š” ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•˜๋ฉฐ ๋•Œ๋กœ๋Š” ๋ฐฐํฌ ํ›„ ํ•˜๋ฃจ์— ๋ฐœ์ƒํ•˜๋ฉฐ ๋•Œ๋กœ๋Š” ๋ฐฐํฌ ํ›„ 3-4 ์ผ ํ›„์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ์–ด๋‚œ๋‹ค.

@antoinerousseau ๋ญ ์ฐพ์•˜ ์–ด? ๋ˆ„๊ตฌ๋“ ์ง€์ด ๋ฌธ์ œ๋ฅผ ์ ์–ด๋„ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋งํ•ด ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‚ด ์ชฝ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌ ํ•œ ํ›„ 1-2 ์ผ์ด ์ง€๋‚ฌ๋‹ค. ๋‚˜์—๊ฒŒ ๋„ˆ๋ฌด ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๊ฐ€ ์–ธ์ œ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•„๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋ฅผ ์œ„ํ•ด ๊ณ ์นœ ๊ฒƒ์€ 404 ํŽ˜์ด์ง€์—์„œ 200์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก S3๋ฅผ ์„ค์ •ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 404 ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

S3 ๋˜๋Š” Cloudfront?

์ œ ๊ฒฝ์šฐ์—๋Š” Azure์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” 404 ํŽ˜์ด์ง€์— ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐจ๋‹จ ์˜ค๋ฅ˜ ์˜€๊ณ  ์ฝ˜์†”์—์„œ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ์œ ์ผํ•œ ๊ฒƒ์€
Error / page resources for / not found. Not rendering React

์‚ฌ์šฉ์ž ์ง€์ • 404๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ดํ›„๋กœ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

Netlify์— ์•ฑ์„ ๋ฐฐํฌ ํ•  ๋•Œ๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. Locally Gatsy Build์™€ Gatsby Serve๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค .. ์ด๊ฒƒ์€ ํ›จ์”ฌ ๋” ์ด์ƒํ•ฉ๋‹ˆ๋‹ค ..

image

@atapas Netlify ์ง€์›ํŒ€์— ๋ฌธ์˜ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ์ž์‹ ์˜ ํŽธ์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

@atapas Netlify ์ง€์›ํŒ€์— ๋ฌธ์˜ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ์ž์‹ ์˜ ํŽธ์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์‘ ๋‚˜๋Š” ํ–ˆ์–ด. ๊ฐ์‚ฌ!

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

@atapas ๋‚˜๋Š” ํŒ€์˜ ์ผ์›์ด ์•„๋‹ˆ๋ฉฐ ๋‹น์‹ ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Netlify์— ์•ฑ์„ ๋ฐฐํฌ ํ•  ๋•Œ๋„ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. Locally Gatsy Build์™€ Gatsby Serve๊ฐ€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค .. ์ด๊ฒƒ์€ ํ›จ์”ฌ ๋” ์ด์ƒํ•ฉ๋‹ˆ๋‹ค ..
image

๋‚˜๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋งฅ๋ฝ์—์„œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. Netlify๊ฐ€ Auth0์ด ๋‚ด ์•ฑ์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์„ค์ • ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ฌด์‹œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„๋ฉ”์ธ : process.env.AUTH0_DOMAIN,
clientID : process.env.AUTH0_CLIENTID,
redirectUri : process.env.AUTH0_CALLBACK,

๋‚˜์ค‘์— ์—ฌ๊ธฐ ์—์„œ "๋ฏผ๊ฐํ•œ ๋ณ€์ˆ˜์—†์ด ๋ฐฐํฌ"์— ๋Œ€ํ•ด ์ฝ๊ณ  ๋ฌธ์„œ์—์„œ ์–ธ๊ธ‰ ํ•œ๋Œ€๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€๋ฐ›์€ ์˜ค๋ฅ˜์— ๋†€๋ž๊ณ  ์†”๋ฃจ์…˜์ด ..์— ๋„์ฐฉํ–ˆ์ง€๋งŒ ํšจ๊ณผ๊ฐ€์žˆ์–ด ๊ธฐ๋ปค์Šต๋‹ˆ๋‹ค.

@atapas ๋‚˜๋Š” ํŒ€์˜ ์ผ์›์ด ์•„๋‹ˆ๋ฉฐ ๋‹น์‹ ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@ JustFly1984 , ์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” Netlify ๋ฌธ์„œ๋ฅผ ์‚ดํŽด ๋ณด์•˜๊ณ  ์œ„์˜ ์ฃผ์„์—์„œ ์–ธ๊ธ‰ ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์•Œ์•„๋‚ผ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ํฌ๋กฌ์—์„œ๋งŒ ์–ป๊ณ ์žˆ๋‹ค. Safari๋Š” ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ํ”„๋กœ์ ํŠธ์— ์˜คํ”„๋ผ์ธ ๋ฐ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Gatsby develop ๋˜๋Š” gatsby build & gatsby serve ๋กœ ๋กœ์ปฌ์—์„œ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Netlify์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ React ๊ตฌ์„ฑ ์š”์†Œ ์™ธ๋ถ€ ์˜์ด ์ฝ”๋“œ ๋ธ”๋ก๊ณผ React ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

let deferredprompt = null;
let updateAvailable = false;
if (
  typeof window !== "undefined" &&
  window.hasOwnProperty("BeforeInstallPromptEvent")
) {
  window.addEventListener("beforeinstallprompt", (event) => {
    deferredprompt = event;
    event.preventDefault();
  });
}

if (typeof window !== "undefined" && window.isUpdateAvailable) {
  window.isUpdateAvailable.then(
    (isAvailable) => (updateAvailable = isAvailable)
  );
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰