Gatsby: React-Hot-Loader: react-๐Ÿ”ฅ-dom ํŒจ์น˜๊ฐ€ ๊ฐ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. React 16.6+ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์„ค๋ช…

๋‚ด ์Šคํƒ€ํ„ฐ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•œ ํ›„ gatsby develop ์‹คํ–‰ํ•œ ํ›„ ๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์—์„œ ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

React-Hot-Loader: react-๐Ÿ”ฅ-dom patch is not detected. React 16.6+ features may not work.

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

  1. ๋ณต์ œ gatsby-starter-strict@6c06471
  2. yarn && yarn develop

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

์–ด๋–ค ๊ฒฝ๊ณ ๋„ ๋˜์ ธ์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

์‹œ์ž‘ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ

  System:
    OS: Windows 10
    CPU: (4) x64 Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
  Binaries:
    Yarn: 1.13.0 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.4.1 - C:\Program Files\nodejs\npm.CMD
  npmPackages:
    gatsby: ^2.1.10 => 2.1.10
    gatsby-plugin-manifest: ^2.0.18 => 2.0.18
    gatsby-plugin-offline: ^2.0.24 => 2.0.24
    gatsby-plugin-react-helmet: ^3.0.6 => 3.0.6
    gatsby-plugin-styled-components: ^3.0.6 => 3.0.6
    gatsby-plugin-typescript: ^2.0.8 => 2.0.8
not stale maintenance

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

๊ทธ๊ฒƒ์€ "๋ฐ˜์‘ ํ™”์žฌ"์™€ ์™„์ „ํžˆ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ์ด๋ชจํ‹ฐ์ฝ˜์ด ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ @hot-loader/react-dom ๋ฅผ devDependency ํ•˜๊ณ  ์ด ํ›„ํฌ๋ฅผ gatsby-node.js .

exports.onCreateWebpackConfig = ({ getConfig, stage }) => {
  const config = getConfig()
  if (stage.startsWith('develop') && config.resolve) {
    config.resolve.alias = {
      ...config.resolve.alias,
      'react-dom': '@hot-loader/react-dom'
    }
  }
}

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

์ด ๊ฒฝ๊ณ ๋„ ๋ณธ ์ ์ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ gatsby-starter-default๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ฒฝ๊ณ ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/gaearon/react-hot-loader/tree/7089062eac273832102c074a368d5af27e23e0b0#webpack -plugin์ด ๋ˆ„๋ฝ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

react fire :fire:๋Š” ์•„์ง ๊ณต์‹์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

Webpack.config๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/webpack.config.js

@wardpeet ์ด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด react-dom ๋ฅผ @hot-loader/react-dom ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค .

๊ทธ๊ฒƒ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช

@achmadk @wardpeet ์–ด๋””์„œ react-dom์„ ๊ต์ฒด ํ•˜์…จ๋‚˜์š” ?
@hot-loader/react-dom ?
๋‚ด ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ gatsby ์ฝ”๋“œ ๋‚ด๋ถ€ ์–ด๋”˜๊ฐ€์— ์žˆ์–ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด @JustFly1984 ๋Š” @kripod์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. package.json ํŒŒ์ผ์—์„œ react-dom ์•ˆ์— dependencies ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ react-dom ๋ฅผ @hot-loader/react-dom .

๋‚˜๋Š” ์ด ๊ฒฝ๊ณ ๋ฅผ gatsby-starter-default๋กœ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

"๋ฆฌ์•กํŠธ ํŒŒ์ด์–ด"๊ฐ€ ์ถœ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” react-dom ๋ฅผ @hot-loader/react-dom ๋ฐ”๊พธ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ทธ๊ฒƒ์€ "๋ฐ˜์‘ ํ™”์žฌ"์™€ ์™„์ „ํžˆ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ์ด๋ชจํ‹ฐ์ฝ˜์ด ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ @hot-loader/react-dom ๋ฅผ devDependency ํ•˜๊ณ  ์ด ํ›„ํฌ๋ฅผ gatsby-node.js .

exports.onCreateWebpackConfig = ({ getConfig, stage }) => {
  const config = getConfig()
  if (stage.startsWith('develop') && config.resolve) {
    config.resolve.alias = {
      ...config.resolve.alias,
      'react-dom': '@hot-loader/react-dom'
    }
  }
}

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ ..
์ง€๊ธˆ์€ ํ•ซ ๋ฆฌ๋กœ๋”ฉ์ด ์—†๋‚˜์š”? (ํŒŒ์ผ์„ ์ €์žฅํ•˜๋ฉด ๋‚ด ์•ฑ์˜ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค)

ํžˆ์•ผ!

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

๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ˜„์žฌ 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์œผ๋ฉด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ ์ตœ์†Œ 20์ผ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋†“์ณค๊ฑฐ๋‚˜ ๊ณ„์† ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ํšŒ์‹ ํ•ด ์ฃผ์„ธ์š”. ์ด ๋ฌธ์ œ๋ฅผ ๊ณ„์† ๊ณต๊ฐœํ•˜๊ธฐ ์œ„ํ•ด "not stale" ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค!

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

์˜ค๋ž˜๋˜์ง€ ์•Š์•„!

์ƒˆ๋กœ์šด ์‚ฌ๋žŒ๋“ค์ด ๋ญ”๊ฐ€ ์ž˜๋ชปํ–ˆ๋‹ค๋Š” ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋“œ๋งต์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜๋ฉด ๋ฌด์—‡์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? @misterbridge ์™€ ๊ฐ™์€ ํ•ซ ๋ฆฌ๋กœ๋”ฉ์ด ์ œ๊ฑฐ๋ฉ๋‹ˆ๊นŒ? ํ•ซ ๋ฆฌ๋กœ๋”ฉ์ด ๊ณ„์† ์ž‘๋™ํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์€ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋ฅผ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ํ•ด๊ฒฐํ•˜๋„๋ก

๋‚˜๋Š” ์ƒˆ๋กœ์šด PR์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/gatsbyjs/gatsby/pull/13713 ์ด๊ฒƒ์ด ๋ช‡ ๊ฐ€์ง€ ์ €์žฅ์†Œ์—์„œ ํ…Œ์ŠคํŠธ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

#13713์—์„œ ์ˆ˜์ •๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๊ฐœ์ธ ๋น„ ๋ฒ„์ „์—์„œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ์ „ํžˆ exports.onCreateWebpackConfig ํŒจ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

React 16.9.0 ์‚ฌ์šฉํ•˜๊ธฐ

๋‹ค์‹œ ๋Œ์•„์˜จ ๊ฒƒ ๊ฐ™๋‹ค.

์ƒˆ๋กœ์šด ์‹œ์ž‘ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ด๊ฒƒ์„ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ํŒŒ์ผ์— react-hot-dom์— ๋Œ€ํ•ด ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"@hot-loader/react-dom": "^16.8.6",

์›นํŒฉ ๊ตฌ์„ฑ์—์„œ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ„์นญ: { 'react-dom': '@hot-loader/react-dom' }

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

https://stackoverflow.com/questions/54770535/react-hot-loader-react-dom-patch-is-not-detected/54816859#54816859

๋ˆ„๊ตฐ๊ฐ€ ๋‹ค์Œ ์ค„์ด ๋ณ€๊ฒฝํ•˜๊ธฐ์— ์ ํ•ฉํ•œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด PR์„ ์ œ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/gatsbyjs/gatsby/blob/561d33e2e491d3971cb2a404eec9705a5a493602/packages/gatsby/src/bootstrap/requires-writer.js#L50 -L63

์ €๋Š” Gatsby๋ฅผ ์ฒ˜์Œ ์ ‘ํ–ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ต์‹ฌ react-dom ํŒจํ‚ค์ง€์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@TheAadithyan ์˜ ์ˆ˜์ •์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ท€์ฐฎ๊ธด ํ•˜์ง€๋งŒ...

Gatsby API์— ์ด์–ด actions.setWebpackConfig ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

exports.onCreateWebpackConfig = ({ stage, actions }) => {
  if (stage.startsWith("develop")) {
    actions.setWebpackConfig({
      resolve: {
        alias: {
          "react-dom": "@hot-loader/react-dom",
        },
      },
    })
  }
}

๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

@antoinerousseau ๋ฐ @ooloth :์ด ํŒจํ‚ค์ง€๋Š” ์‚ฌ์šฉ์‹œ ์ปดํŒŒ์ผ ์‹คํŒจ ํ”„๋กœ์ ํŠธ ์›์ธ์œผ๋กœ ๋ถˆ์šด ํ•œ ๋ถ€์ž‘์šฉ์— ํ•ด๋‹น ํŒจ์น˜ react-modal ์œผ๋กœ ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์„ค์น˜๋˜์–ด file:[path to project] . ์ •๋ง ์ด์ƒํ•œ ์ ์€ Azure DevOps ์•„ํ‹ฐํŒฉํŠธ์—์„œ ์„ค์น˜ํ•  ๋•Œ ๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŒจ์น˜๋ฅผ ์ œ๊ฑฐํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. react-modal ๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐœ์˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋‘˜ ๋‹ค ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. react-modal ๋Š” react-dom ์ข…์†๋˜์–ด ์žˆ์ง€๋งŒ ์œ„์˜ ํŒจ์น˜๊ฐ€ ์ ์šฉ๋˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ

์˜ˆ์‹œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” https://github.com/collector-bank/collector-portal-framework๋ฅผ ์ฐธ์กฐ

๋ฒˆ์‹ ๋ฐฉ๋ฒ•

  1. react-modal ์‚ฌ์šฉํ•˜์—ฌ file:.. react-modal ์ข…์†๋œ ๋กœ์ปฌ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. npm run start ํ•ฉ๋‹ˆ๋‹ค.
  3. ์•„๋ž˜์™€ ๊ฐ™์€ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ปดํŒŒ์ผ ์‹คํŒจ๋ฅผ ๊ด€์ฐฐํ•˜์‹ญ์‹œ์˜ค.
ยป npm run start                                                                                                                    [removed for privacy reasons]@Eriks-MBP

> [email protected] start /Users/[removed for privacy reasons]/Projects/[removed for privacy reasons]/FooProject
> npm run develop


> [email protected] develop /Users/[removed for privacy reasons]/Projects/[removed for privacy reasons]/FooProject
> gatsby develop

success open and validate gatsby-configs - 0.029 s
success load plugins - 0.247 s
success onPreInit - 0.015 s
info One or more of your plugins have changed since the last time you ran Gatsby. As
a precaution, we're deleting your site's cache to ensure there's not any stale
data
success initialize cache - 0.031 s
success copy gatsby files - 0.049 s
success onPreBootstrap - 0.020 s
success source and transform nodes - 0.098 s
success Add explicit types - 0.018 s
success Add inferred types - 0.099 s
success Processing types - 0.075 s
success building schema - 0.250 s
success createPages - 0.014 s
success createPagesStatefully - 0.055 s
success onPreExtractQueries - 0.016 s
success update schema - 0.032 s
success extract queries from components - 0.231 s
success write out requires - 0.027 s
success write out redirect data - 0.013 s
success Build manifest and related icons - 0.104 s
success onPostBootstrap - 0.127 s
โ €
info bootstrap finished - 3.117 s
โ €
success run static queries - 0.058 s โ€” 3/3 67.58 queries/second
success run page queries - 0.028 s โ€” 5/5 365.36 queries/second
success start webpack server - 1.300 s โ€” 1/1 7.17 pages/second
 ERROR  Failed to compile with 2 errors                                                                                                          09:36:39
โ €
This dependency was not found:
โ €
* react-dom in /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-modal/lib/components/Modal.js, /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js
โ €
To install it, you can run: npm install --save react-dom

 ERROR 

โœ– ๏ฝขwdm๏ฝฃ:
ERROR in /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-modal/lib/components/Modal.js
Module not found: Error: Can't resolve 'react-dom' in '/Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-modal/lib/components'
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-modal/lib/components/Modal.js 16:16-36
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-modal/lib/index.js
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/dist/components/Modal/index.js
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/dist/components/index.js
 @ ./src/components/layout.tsx
 @ ./src/pages/page-2.tsx
 @ ./.cache/sync-requires.js
 @ ./.cache/app.js
 @ multi ./node_modules/event-source-polyfill/src/eventsource.js (webpack)-hot-middleware/client.js?path=/__webpack_hmr&reload=true&overlay=false ./.cache/app

ERROR in /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js
Module not found: Error: Can't resolve 'react-dom' in '/Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-onclickoutside/dist'
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-onclickoutside/dist/react-onclickoutside.es.js 2:0-40 199:15-26
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/node_modules/react-datepicker/dist/react-datepicker.min.js
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/dist/common/components/DatePicker/index.js
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/dist/common/components/index.js
 @ /Users/[removed for privacy reasons]/Projects/Private/collector-portal-framework-upstream/dist/components/index.js
 @ ./src/components/layout.tsx
 @ ./src/pages/page-2.tsx
 @ ./.cache/sync-requires.js
 @ ./.cache/app.js
 @ multi ./node_modules/event-source-polyfill/src/eventsource.js (webpack)-hot-middleware/client.js?path=/__webpack_hmr&reload=true&overlay=false ./.cache/app

info โ„น ๏ฝขwdm๏ฝฃ: Failed to compile.

๊ทธ๊ฒƒ์€ "๋ฐ˜์‘ ํ™”์žฌ"์™€ ์™„์ „ํžˆ ๊ด€๋ จ์ด ์—†์œผ๋ฉฐ ์ด๋ชจํ‹ฐ์ฝ˜์ด ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ @hot-loader/react-dom ๋ฅผ devDependency ํ•˜๊ณ  ์ด ํ›„ํฌ๋ฅผ gatsby-node.js .

exports.onCreateWebpackConfig = ({ getConfig, stage }) => {
  const config = getConfig()
  if (stage.startsWith('develop') && config.resolve) {
    config.resolve.alias = {
      ...config.resolve.alias,
      'react-dom': '@hot-loader/react-dom'
    }
  }
}

๋‚˜์ค‘์— ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผํ–ˆ์ง€๋งŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค!

@prevolorio ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๊นŒ? ...

Gatsby API์— ์ด์–ด actions.setWebpackConfig ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

exports.onCreateWebpackConfig = ({ stage, actions }) => {
  if (stage.startsWith("develop")) {
    actions.setWebpackConfig({
      resolve: {
        alias: {
          "react-dom": "@hot-loader/react-dom",
        },
      },
    })
  }
}

๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ๋‰ด๋น„. ์ด ์ฝ”๋“œ๋ฅผ ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ•˜๋‚˜์š”? ๊ฐœ์ธ ๋น„ ๋…ธ๋“œ.js?

@TriStarGod ์˜ˆ, API ํ›„ํฌ๊ฐ€ "์‚ด์•„์žˆ๋Š”"๊ณณ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ gatsby-node.js ์‚ฝ์ž…๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@TriStarGod ์ œ๊ฐ€ ๋งํฌํ•œ ํŽ˜์ด์ง€์— ๋ฐ”๋กœ ๋‚˜์™€์žˆ์–ด์š”...

์‚ฌ์šฉ๋ฒ•: ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์žˆ๋Š” gatsby-node.js๋ผ๋Š” ํŒŒ์ผ์—์„œ API๋ฅผ ๋‚ด๋ณด๋‚ด ์ด๋Ÿฌํ•œ API๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

Windows 10์—์„œ๋„ ์ด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ Ubuntu Linux ๋˜๋Š” macOS์—์„œ๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ๊ณ ๊ฐ€ Windows ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ํ•ด๋‹น๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@kimbaudi Windows ์‹œ์Šคํ…œ ๊ดœ์ฐฎ์„์ง€ ์•„์‹ญ๋‹ˆ๊นŒ ??

Gatsby ์Šคํƒ€ํ„ฐ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์ด ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋˜ ํ”„๋กœ์ ํŠธ์— ๊ฐ‘์ž๊ธฐ ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•ด๋„ ๋ ๊นŒ์š”?

+1

Chrome์„ ํ†ตํ•ด Windows 10 ์ปดํ“จํ„ฐ์—์„œ ์ด ๋ฌธ์ œ๋„ ํ‘œ์‹œ๋จ(ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ)

+1 ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  @hot-loader/react-dom ์‚ฌ์šฉํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‘ ๋ฒ„์ „ ๋ชจ๋‘ ์‹œ๋„) - dev๋Š” Error: Cannot find module 'react-dom/server' ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ง์žฅ์—์„œ ๋‚ด WINdows ์ƒ์ž์— ์ด๊ฒƒ์„ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ๊ฐœ์ธ Macbook ์ƒ์ž์—์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์— ๋ฐ˜์‘ํ•œ ์ดํ›„๋กœ ์ด๊ฒƒ์„ ๋‹ค์‹œ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

running: yarn add react-dom<strong i="5">@npm</strong>:@hot-loader/react-dom ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
From: react-dom - ํ•ซ๋กœ๋” ์—๋””์…˜ Rewire - (Yarn) ๊ธฐํƒ€ ์‹œ์Šคํ…œ

running: yarn add react-dom<strong i="6">@npm</strong>:@hot-loader/react-dom ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
From: react-dom - ํ•ซ๋กœ๋” ์—๋””์…˜ Rewire - (Yarn) ๊ธฐํƒ€ ์‹œ์Šคํ…œ

๋˜๋Š” npm add @hot-loader/react-dom@[YOUR_REACT_VERSION]
์˜ˆ: npm add @hot-loader/[email protected]
๊ทธ๋ฆฌ๊ณ  gatsby-node.js์— ์ถ”๊ฐ€:
exports.onCreateWebpackConfig = ({ getConfig, stage }) => { const config = getConfig() if (stage.startsWith('develop') && config.resolve) { config.resolve.alias = { ...config.resolve.alias, 'react-dom': '@hot-loader/react-dom' } } }
gatsby develop
๋‚˜๋ฅผ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ์›ํ™œํ•œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  gatsby ์‚ฌ์ดํŠธ์—์„œ ์—ฌ์ „ํžˆ ๊ด€๋ จ ์ˆ˜์ •์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ํ•ซ ๋ฆฌ๋กœ๋”ฉ์ด ์‹ค์ œ๋กœ ๊ฐ„ํ—์ ์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” yarn add react-dom<strong i="5">@npm</strong>:@hot-loader/react-dom ์žˆ์ง€๋งŒ lerna๊ฐ€ ์žˆ๋Š” ์›์‚ฌ ์ž‘์—… ๊ณต๊ฐ„ ํ”„๋กœ์ ํŠธ์—๋Š” ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋Š” ๋ถˆ์พŒํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธํ˜ธ์ด์ŠคํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ฒ˜์Œ์— ์ƒ๊ฐํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฐฉ๋ฒ•(ํŒจํ‚ค์ง€ ๋ณ„์นญ ์ง€์ •)์ด ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ 100% ํ™•์‹ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

`@hot-loader/react-dom"์„ ์„ค์น˜ํ•˜๊ณ  ์›นํŒฉ ๊ตฌ์„ฑ์„ gatsby-node.js์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์˜๊ตฌ์ ์ธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๊นŒ? ์˜๊ตฌ์ ์ธ ๊ฒฝ์šฐ Gatsby์— ๋‚ด์žฅํ•ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์•„์‡ ๊ฐ€ ๋˜๊ฒ ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ Ant Design 4.1.5์—์„œ v4.2.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ๋ Œ๋”๋ง๋˜์ง€ ์•Š๋Š” ํŠน์ • ํŽ˜์ด์ง€์— ๋„๋‹ฌํ–ˆ๋‹ค๊ณ  ๋ง๋ถ™์ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก List.Item ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ–ˆ๋Š”๋ฐ ํด๋ž˜์Šค ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๋Š” ๊ธฐ๋Šฅ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ React ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์™„์ „ํžˆ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์•ผ๊ธฐ์˜ ๊ตํ›ˆ: "react-๐Ÿ”ฅ-dom ํŒจ์น˜๊ฐ€ ๊ฐ์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค." ๊ฒฝ๊ณ ๋Š” ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

@wardpeet ์ด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด react-dom ๋ฅผ @hot-loader/react-dom ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค .

๊ทธ ์ผ์„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์†Œ์‹์ด ์žˆ๋‚˜์š”?
@wardpeet์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ํ”„๋กœ์ ํŠธ์—์„œ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

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

๋‚˜๋Š” ๋‹ค์Œ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์—ฌ๊ธฐ์— ์˜ต๋‹ˆ๋‹ค.
https://github.com/gatsbyjs/gatsby-starter-default

๊ทธ๋ž˜์„œ ์ €์™€ ์—ฌ๊ธฐ๊นŒ์ง€ ์Šคํฌ๋กค ํ•ด์ฃผ์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์ด ๊ธ€์„ ์”๋‹ˆ๋‹ค ๐Ÿ‘‹ (ํ—ค์ด ํ“จ์ฒ˜๋ฏธ)

1 ๋‹จ๊ณ„

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. - ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

npm install -D @hot-loader/react-dom

2 ๋‹จ๊ณ„

gatsby.node.js ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

exports.onCreateWebpackConfig = ({ stage, actions }) => {
  if (stage.startsWith("develop")) {
    actions.setWebpackConfig({
      resolve: {
        alias: {
          "react-dom": "@hot-loader/react-dom",
        },
      },
    })
  }
}

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋œ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ณด๋‹ค ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
https://github.com/gatsbyjs/gatsby/issues/11934#issuecomment -538662592

"๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— actions.setWebpackConfig๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค"

GATSBY_HOT_LOADER=fast-refresh ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. @hot-loader๋ฅผ ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ PR์„ ์ˆ˜๋ฝํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€ ํŒŒ์ผ์— react-hot-dom์— ๋Œ€ํ•ด ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"@hot-loader/react-dom": "^16.8.6",

์›นํŒฉ ๊ตฌ์„ฑ์—์„œ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ณ„์นญ: { 'react-dom': '@hot-loader/react-dom' }

์ด๊ฒƒ์€ https://github.com/gatsbyjs/gatsby/pull/26927 ์— ํ•„์š”ํ•œ ์ž‘์—…์„

@wardpeet - ๋ฐฉ๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ฝ˜์†” ๊ฒฝ๊ณ ๋ฅผ ํ†ตํ•ด ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋ณด๋‹ค๋Š”...

์„ค์น˜์— ํ•„์š”ํ•œ ๋ฒ„์ „์„ ์ง€์ •ํ•˜์—ฌ ์ฝ˜์†” ๋‚ด์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค ๐ŸŽ‰

์ œ์•ˆ๋œ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • "@hot-loader/react-dom" ์„ค์น˜: "^16.8.6"
  • gatsby-config.js ์— ์ด ์„น์…˜์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

exports.onCreateWebpackConfig = ({ stage, actions }) => { if (stage.startsWith('develop')) { actions.setWebpackConfig({ resolve: { alias: { 'react-dom': '@hot-loader/react-dom' } } }); } };

ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์–ด๋– ํ•œ ์ œ์•ˆ?

ฮป ๊ฐœ์ธ ๋น„ ์ •๋ณด

์ฒด๊ณ„:
์šด์˜ ์ฒด์ œ: ์œˆ๋„์šฐ 10 10.0.16299
CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
๋ฐ”์ด๋„ˆ๋ฆฌ:
๋…ธ๋“œ: 14.6.0 - C:\Program Filesnodejsnode.EXE
์›์‚ฌ: 1.22.4 - C:\Program Files (x86)\Yarn\binyarn.CMD
npm: 6.14.6 - C:\Program Filesnodejs\npm.CMD
์–ธ์–ด:
ํŒŒ์ด์ฌ: 3.8.1 - /c/Users/ccordero/AppData/Local/Programs/Python/Python38/python
๋ธŒ๋ผ์šฐ์ €:
์—์ง€: ์ŠคํŒŒ๋ฅดํƒ€(41.16299.1004.0)
npmํŒจํ‚ค์ง€:
๊ฐœ์ธ ๋น„: ^2.18.18 => 2.24.33
๊ฐœ์ธ ๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ: ^2.4.22 => 2.4.22
๊ฐœ์ธ ๋น„ ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜คํ”„๋ผ์ธ: ^3.2.22 => 3.2.22
gatsby-source-graphql: ^2.7.0 => 2.7.0
๊ฐœ์ธ ๋น„ ํ…Œ๋งˆ ์ฝ”๋“œ๋ถ€์‹œ: 1.0.0 => 1.0.0

์—…๋ฐ์ดํŠธ:
์ด์ „ ๋‹จ๊ณ„๋ฅผ ๋กค๋ฐฑํ–ˆ์œผ๋ฉฐ ์ด ์†”๋ฃจ์…˜์€ ๋งˆ์นจ๋‚ด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

running: yarn add react-dom<strong i="37">@npm</strong>:@hot-loader/react-dom ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
From: react-dom - ํ•ซ๋กœ๋” ์—๋””์…˜ Rewire - (Yarn) ๊ธฐํƒ€ ์‹œ์Šคํ…œ

1 ๋‹จ๊ณ„

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. - ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์„ ๋‹จ๋…์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

npm install -D @hot-loader/react-dom

2 ๋‹จ๊ณ„

gatsby.node.js ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

exports.onCreateWebpackConfig = ({ stage, actions }) => {
  if (stage.startsWith("develop")) {
    actions.setWebpackConfig({
      resolve: {
        alias: {
          "react-dom": "@hot-loader/react-dom",
        },
      },
    })
  }
}

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์—ฌ๊ธฐ์— ์–ธ๊ธ‰๋œ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ณด๋‹ค ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
#11934 (๋Œ“๊ธ€)

"๊ธฐ๋ณธ ๊ตฌ์„ฑ๊ณผ ์ž๋™์œผ๋กœ ๋ณ‘ํ•ฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— actions.setWebpackConfig๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค"

์„ค์น˜์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐ˜์‘ ๋ฒ„์ „์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@zaktwist์˜ ๊ฒŒ์‹œ๋ฌผ์ด
npm add @hot-loader/react-dom@[YOUR_REACT_VERSION]
์˜ˆ: npm add @hot-loader/[email protected]

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