๋ด ์คํํฐ ํ๋ก์ ํธ์ ๋ชจ๋ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ ํ gatsby develop
์คํํ ํ ๋ธ๋ผ์ฐ์ ์ฝ์์์ ๋ค์ ๋ฉ์์ง๋ฅผ ํ์ธํ์ต๋๋ค.
React-Hot-Loader: react-๐ฅ-dom patch is not detected. React 16.6+ features may not work.
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
์ด ๊ฒฝ๊ณ ๋ ๋ณธ ์ ์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ํ 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' }
์ค์ ๋ก ์๋ฌด ๊ฒ๋ ๊นจ๋จ๋ฆฌ์ง ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋๋ตํ ์ด ์คํ ์ค๋ฒํ๋ก ์ง๋ฌธ์ ์ธ๊ธ๋ ๋๋ก ๊ฒฝ๊ณ ๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์์ ํฉ๋๋ค.
๋๊ตฐ๊ฐ ๋ค์ ์ค์ด ๋ณ๊ฒฝํ๊ธฐ์ ์ ํฉํ์ง ํ์ธํ ์ ์๋ค๋ฉด PR์ ์ ์ถํ ๊ฒ์ ๋๋ค.
์ ๋ 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๋ฅผ ์ฐธ์กฐ
react-modal
์ฌ์ฉํ์ฌ file:..
react-modal
์ข
์๋ ๋ก์ปฌ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.npm run start
ํฉ๋๋ค.ยป 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
๊ทธ๋์ ์ ์ ์ฌ๊ธฐ๊น์ง ์คํฌ๋กค ํด์ฃผ์๋ ๋ถ๋ค์ ์ํด ์ด ๊ธ์ ์๋๋ค ๐ (ํค์ด ํจ์ฒ๋ฏธ)
์ด ๋ช ๋ น์ ์คํํ์ญ์์ค. - ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋จ๋ ์ผ๋ก ์คํํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค.
npm install -D @hot-loader/react-dom
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 - ๋ฐฉ๊ธ ์ด ๋ฌธ์ ๋ฅผ
๋ค๋ฅธ ์ฌ๋๋ค์ ํ์คํ์ง ์์ง๋ง ์ฝ์ ๊ฒฝ๊ณ ๋ฅผ ํตํด ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ธฐ๋ฅ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ณด๋ค๋...
์ค์น์ ํ์ํ ๋ฒ์ ์ ์ง์ ํ์ฌ ์ฝ์ ๋ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฒฝํฉ๋๋ค ๐
์ ์๋ ์๋ฃจ์ ์ ์๋ํ์ต๋๋ค.
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]
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๊ฒ์ "๋ฐ์ ํ์ฌ"์ ์์ ํ ๊ด๋ จ์ด ์์ผ๋ฉฐ ์ด๋ชจํฐ์ฝ์ด ํผ๋ ์ค๋ฝ์ต๋๋ค.
๋ก์ปฌ์์ ์ํํ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์
@hot-loader/react-dom
๋ฅผdevDependency
ํ๊ณ ์ด ํํฌ๋ฅผgatsby-node.js
.