Setelah memperbarui semua dependensi proyek pemula saya, saya melihat pesan berikut di konsol browser setelah menjalankan gatsby develop
:
React-Hot-Loader: react-🔥-dom patch is not detected. React 16.6+ features may not work.
yarn && yarn develop
Tidak ada peringatan yang harus dilemparkan.
Peringatan dilemparkan bahkan dengan proyek awal.
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
Saya dapat mengonfirmasi bahwa saya juga telah melihat peringatan ini. Saya juga dapat mereproduksi peringatan ini dengan gatsby-starter-default.
Kami mungkin kehilangan https://github.com/gaearon/react-hot-loader/tree/7089062eac273832102c074a368d5af27e23e0b0#webpack -plugin
Ini bukan masalah besar karena reaksi api :api: belum resmi.
Webpack.config ada di sini:
https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/webpack.config.js
@wardpeet Saya mengganti react-dom
dengan @hot-loader/react-dom untuk menghapus peringatan ini.
yang bekerja juga! 💪
@achmadk @wardpeet di mana Anda mengganti react-dom dengan
@hot-loader/react-dom ?
Saya tidak melihat bahwa di basis kode saya, itu harus berada di suatu tempat di dalam kode gatsby
@JustFly1984 misalnya, saya menggunakan basis kode dari @kripod . Dalam file package.json
, Ini memiliki react-dom
di dalam dependencies
. Dan kemudian ganti react-dom
dengan @hot-loader/react-dom
.
Saya mereproduksi peringatan ini dengan gatsby-starter-default.
Jadi apa yang harus kita lakukan?
Tunggu "react fire" dirilis? Atau ganti react-dom
dengan @hot-loader/react-dom
?
Itu sama sekali tidak terkait dengan "reaksi api" dan emoji itu membingungkan.
Solusi yang dapat dilakukan secara lokal adalah menginstal @hot-loader/react-dom
sebagai devDependency
dan menambahkan kait ini ke 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'
}
}
}
Solusinya menghilangkan peringatan tetapi ..
Tidak ada reload panas untuk saat ini? (Menyimpan file akan menyegarkan halaman di aplikasi saya)
Hai!
Masalah ini sudah sepi. Sepi sepi. 👻
Kami mendapatkan banyak masalah, jadi saat ini kami menutup masalah setelah 30 hari tidak aktif. Sudah setidaknya 20 hari sejak pembaruan terakhir di sini.
Jika kami melewatkan masalah ini atau jika Anda ingin tetap membukanya, balas di sini. Anda juga dapat menambahkan label "tidak basi" agar masalah ini tetap terbuka!
Terima kasih telah menjadi bagian dari komunitas Gatsby! 💪💜
tidak basi!
Saya telah menambahkannya ke peta jalan kami karena itu mungkin melempar orang baru yang mungkin memberi mereka kesan bahwa mereka telah melakukan kesalahan.
Untuk memperjelas, apa yang harus kita harapkan dari penerapan solusi? Apakah itu akan menghapus pemuatan ulang panas seperti yang diperhatikan @misterbridge ? Adakah yang menemukan solusi yang membuat pemuatan ulang tetap berfungsi?
Biarkan saya memperbaiki ini secepatnya
Saya membuat PR baru https://github.com/gatsbyjs/gatsby/pull/13713 akan menyenangkan jika ini bisa diuji pada beberapa repo.
Sepertinya ini sudah diperbaiki di #13713
Apakah kita masih membutuhkan patch exports.onCreateWebpackConfig
untuk menghapus peringatan di versi gatsby terakhir? Atau bisakah kita mengabaikan peringatan itu?
Menggunakan Bereaksi 16.9.0
Sepertinya akan kembali lagi
Saya juga melihat ini di proyek pemula baru.
anda perlu menambahkan versi yang cocok untuk react-hot-dom di file paket Anda
"@hot-loader/react-dom": "^16.8.6",
dan di konfigurasi webpack Anda, Anda perlu menambahkan
alias: { 'react-dom': '@hot-loader/react-dom' }
Karena tidak benar-benar merusak apa pun, biasanya aman untuk menyembunyikan peringatan seperti yang disebutkan dalam pertanyaan stack overflow yang saya jawab:
Saya siap mengirimkan PR jika seseorang dapat mengonfirmasi bahwa baris berikut adalah tempat yang tepat untuk melakukan perubahan:
Saya agak baru di Gatsby tetapi saya pikir ini akan menjadi perubahan yang cukup mudah yang tidak mengharuskan pengguna untuk bermigrasi dari paket inti react-dom
.
Perbaikan oleh @TheAadithyan berfungsi. Agak mengganggu sih...
Mengikuti API Gatsby , lebih baik gunakan actions.setWebpackConfig
, mis
exports.onCreateWebpackConfig = ({ stage, actions }) => {
if (stage.startsWith("develop")) {
actions.setWebpackConfig({
resolve: {
alias: {
"react-dom": "@hot-loader/react-dom",
},
},
})
}
}
Secara otomatis bergabung dengan konfigurasi default.
@antoinerousseau dan @ooloth : Patch itu sebagai efek samping yang tidak menguntungkan karena menyebabkan proyek gagal dikompilasi ketika sebuah paket menggunakan react-modal
telah diinstal dari sistem file lokal dengan file:[path to project]
. Yang benar-benar aneh adalah kode yang sama berfungsi dengan baik saat menginstalnya dari artefak Azure DevOps kami.
Masalah tidak terjadi saat melepas tambalan. Saya telah menguji ini dengan dua proyek berbeda yang memiliki react-modal
sebagai ketergantungan dan keduanya gagal dengan kesalahan yang sama. react-modal
memiliki ketergantungan pada react-dom
tetapi tidak dapat menyelesaikannya ketika patch di atas diterapkan.
Untuk contoh repo, lihat https://github.com/collector-bank/collector-portal-framework.
react-modal
menggunakan file:..
.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.
Itu sama sekali tidak terkait dengan "reaksi api" dan emoji itu membingungkan.
Solusi yang dapat dilakukan secara lokal adalah menginstal
@hot-loader/react-dom
sebagaidevDependency
dan menambahkan kait ini kegatsby-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' } } }
Saya harus mengkompilasi ulang setelahnya tetapi berhasil!
@prevolorio apakah Anda membaca utas ini?...
Mengikuti API Gatsby , lebih baik gunakan
actions.setWebpackConfig
, misexports.onCreateWebpackConfig = ({ stage, actions }) => { if (stage.startsWith("develop")) { actions.setWebpackConfig({ resolve: { alias: { "react-dom": "@hot-loader/react-dom", }, }, }) } }
Secara otomatis bergabung dengan konfigurasi default.
Baru disini. Di mana saya meletakkan kode ini? gatsby-node.js?
@TriStarGod ya, di situlah kait api "hidup". Cuplikan kode itu harus dimasukkan ke dalam gatsby-node.js
@TriStarGod Dikatakan tepat di halaman yang saya
Penggunaan: Terapkan salah satu API ini dengan mengekspornya dari file bernama gatsby-node.js di root proyek Anda.
Saya juga mendapatkan peringatan ini di Windows 10, tetapi tidak di Ubuntu Linux atau macOS. Saya ingin tahu apakah peringatan ini khusus untuk pengguna windows.
@kimbaudi Saya memiliki kesalahan ini di sistem windows juga, apakah Anda tahu apakah itu akan baik-baik saja di lingkungan produksi di linux??
Saya mencoba solusi ini untuk paket starter Gatsby dan tidak berhasil. Apakah ada yang berubah baru-baru ini?
Ini tiba-tiba mulai muncul di proyek yang sedang saya kerjakan, mengapa ini terjadi. apakah saya melanggar sesuatu, bisakah saya mengabaikan peringatan itu?
+1
Melihat masalah ini juga, pada mesin windows 10 melalui Chrome (jika itu relevan)
+1 sama di sini. Dan solusi dengan @hot-loader/react-dom
tidak berfungsi (mencoba kedua versi) - dev gagal dengan Error: Cannot find module 'react-dom/server'
Juga mendapatkan ini di kotak WIndows saya di tempat kerja. Akan memeriksanya di kotak Macbook pribadi saya nanti untuk melihat apakah saya mendapatkan hasil yang berbeda.
Saya mulai melihat ini lagi sejak memperbarui bereaksi ke versi terbaru.
berjalan: yarn add react-dom<strong i="5">@npm</strong>:@hot-loader/react-dom
memecahkan masalah untuk saya.
Dari: react-dom - edisi hot-loader Rewire - (Benang) Sistem lainnya
berjalan:
yarn add react-dom<strong i="6">@npm</strong>:@hot-loader/react-dom
memecahkan masalah untuk saya.
Dari: react-dom - edisi hot-loader Rewire - (Benang) Sistem lainnya
atau npm add @hot-loader/react-dom@[YOUR_REACT_VERSION]
misalnya: npm add @hot-loader/[email protected]
dan tambahkan ke 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'
}
}
}
jalankan gatsby develop
memecahkan masalah bagi saya.
Masih merupakan perbaikan yang relevan yang perlu saya lakukan di semua situs gatsby saya untuk memastikan proses pengembangan yang lebih lancar. Jika tidak, pemuatan ulang panas memang kadang-kadang gagal di lingkungan pengembangan localhost.
Saya menggunakan yarn add react-dom<strong i="5">@npm</strong>:@hot-loader/react-dom
tetapi dalam proyek ruang kerja benang dengan lerna ada masalah buruk yang tidak dapat saya perbaiki. Mencoba nohoist tetapi tidak berfungsi seperti yang saya pikirkan pada awalnya.
Seperti apakah ada yang memecahkannya? Saya pikir metode ini (paket alias) dapat menyebabkan masalah ini tetapi saya tidak 100% yakin.
Apakah menginstal `@hot-loader/react-dom" dan menambahkan konfigurasi webpack ke gatsby-node.js merupakan solusi atau solusi permanen? Jika permanen, bukankah ini harus dibangun ke dalam Gatsby? Jika ini solusi, apa yang akan menjadi pemicu bagi kita untuk menghapusnya?
Saya juga ingin menambahkan bahwa saya mengalami halaman tertentu yang tidak bisa dirender setelah memperbarui dari Ant Design 4.1.5 ke v4.2.0. Mereka memfaktorkan ulang komponen List.Item
untuk menggunakan kait, dan saya mendapatkan kesalahan React tentang komponen fungsional yang mencoba mengembalikan komponen kelas. Menerapkan tambalan benar-benar menyelesaikan masalah ini. Moral dari cerita: peringatan "react-🔥-dom patch tidak terdeteksi" benar-benar dapat menyebabkan masalah!
@wardpeet Saya mengganti
react-dom
dengan @hot-loader/react-dom untuk menghapus peringatan ini.
terima kasih karyanya
Ada berita?
Haruskah kita melanjutkan dan memperbaikinya secara manual di proyek kita, seperti yang disarankan @wardpeet ?
Saya harus mengatakan bahwa ini adalah gejala dari begitu banyak pengembangan web akhir-akhir ini. Sebuah kesalahan acak yang disebabkan oleh perubahan acak tanpa solusi yang jelas yang tidak melibatkan memulai beberapa perbaikan hit dan harapan yang Anda coba kalau-kalau mereka bekerja dan tidak benar-benar memahami mengapa mereka melakukannya atau tidak. Ya, saya harus lebih terlibat dalam repo tapi hei, saya bahkan tidak bisa menjalankan Gatsby tanpa banyak peringatan acak jadi saya tidak akan berguna. 2 sen saya.
Saya datang ke sini setiap kali saya memulai proyek dengan:
https://github.com/gatsbyjs/gatsby-starter-default
Jadi saya menulis catatan ini untuk diri saya sendiri, dan siapa pun yang menggulir sejauh ini (Hai masa depan saya)
Jalankan perintah ini - Tetapi menjalankan ini saja tidak akan memperbaiki masalah:
npm install -D @hot-loader/react-dom
Ubah gatsby.node.js
untuk menambahkan yang berikut:
exports.onCreateWebpackConfig = ({ stage, actions }) => {
if (stage.startsWith("develop")) {
actions.setWebpackConfig({
resolve: {
alias: {
"react-dom": "@hot-loader/react-dom",
},
},
})
}
}
Gunakan kode di atas di atas yang lain yang disebutkan di sini karena:
https://github.com/gatsbyjs/gatsby/issues/11934#issuecomment -538662592
"Lebih baik menggunakan actions.setWebpackConfig karena otomatis menyatu dengan konfigurasi default"
anda juga dapat menggunakan GATSBY_HOT_LOADER=fast-refresh
. Kami senang menerima PR untuk menjadikan @hot-loader sebagai default untuk pengembangan
anda perlu menambahkan versi yang cocok untuk react-hot-dom di file paket Anda
"@hot-loader/react-dom": "^16.8.6",
dan di konfigurasi webpack Anda, Anda perlu menambahkan
alias: { 'react-dom': '@hot-loader/react-dom' }
Apakah ini akan membantu menemukan apa yang perlu Anda lakukan https://github.com/gatsbyjs/gatsby/pull/26927 ?
@wardpeet - Saya baru saja mengalami ini, dan ya, sangat jelas. Terima kasih.
Tidak yakin tentang yang lain, tetapi saya menemukannya melalui peringatan konsol... Daripada mengalami kegagalan fungsi apa pun.
Menambahkan langkah-langkah untuk menyelesaikan masalah di dalam konsol dengan menentukan versi yang diperlukan untuk menginstal adalah kesempurnaan
Saya mencoba solusi yang disarankan:
gatsby-config.js
:exports.onCreateWebpackConfig = ({ stage, actions }) => {
if (stage.startsWith('develop')) {
actions.setWebpackConfig({
resolve: {
alias: {
'react-dom': '@hot-loader/react-dom'
}
}
});
}
};
tapi itu tidak bekerja untuk saya.
Ada saran?
info gatsby
Sistem:
OS: Windows 10 10.0.16299
CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Biner:
Node: 14.6.0 - C:\Program Filesnodejsnode.EXE
Benang: 1.22.4 - C:\Program Files (x86)\Yarn\binyarn.CMD
npm: 6.14.6 - C:\Program Filesnodejs\npm.CMD
Bahasa:
Python: 3.8.1 - /c/Users/ccordero/AppData/Local/Programs/Python/Python38/python
Browser:
Tepi: Spartan (41.16299.1004.0)
npmPaket:
gatsby: ^2.18.18 => 2.24.33
gatsby-plugin-manifest: ^2.4.22 => 2.4.22
gatsby-plugin-offline: ^3.2.22 => 3.2.22
gatsby-source-graphql: ^2.7.0 => 2.7.0
gatsby-theme-codebushi: 1.0.0 => 1.0.0
MEMPERBARUI:
Saya memutar kembali langkah-langkah sebelumnya, dan solusi ini akhirnya menghapus peringatan:
berjalan:
yarn add react-dom<strong i="37">@npm</strong>:@hot-loader/react-dom
memecahkan masalah untuk saya.
Dari: react-dom - edisi hot-loader Rewire - (Benang) Sistem lainnya
Langkah 1
Jalankan perintah ini - Tetapi menjalankan ini saja tidak akan memperbaiki masalah:
npm install -D @hot-loader/react-dom
Langkah 2
Ubah
gatsby.node.js
untuk menambahkan yang berikut:exports.onCreateWebpackConfig = ({ stage, actions }) => { if (stage.startsWith("develop")) { actions.setWebpackConfig({ resolve: { alias: { "react-dom": "@hot-loader/react-dom", }, }, }) } }
Gunakan kode di atas di atas yang lain yang disebutkan di sini karena:
#11934 (komentar)"Lebih baik menggunakan actions.setWebpackConfig karena otomatis menyatu dengan konfigurasi default"
Instal gagal untuk saya, saya harus menambahkan versi reaksi saya saat ini.
Posting dari @zaktwist berhasil (https://github.com/gatsbyjs/gatsby/issues/11934#issuecomment-597560317)
npm add @hot-loader/react-dom@[YOUR_REACT_VERSION]
Misalnya npm add @hot-loader/[email protected]
Komentar yang paling membantu
Itu sama sekali tidak terkait dengan "reaksi api" dan emoji itu membingungkan.
Solusi yang dapat dilakukan secara lokal adalah menginstal
@hot-loader/react-dom
sebagaidevDependency
dan menambahkan kait ini kegatsby-node.js
: