بعد تحديث Gatsby من 2.17.7 إلى 2.18.4 ، يؤدي تشغيل أي نوع من أوامر gatsby إلى حدوث خطأ. لا يوجد سياق حرفيًا بالرغم من ذلك.
> gatsby clean
The above error occurred in the <StoreStateProvider> component:
in StoreStateProvider
in App
React will try to recreate this component tree from scratch using the error boundary you provided, App.
Warning: App: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.
> gatsby build
The above error occurred in the <StoreStateProvider> component:
...
لسوء الحظ ، لا يمكنني تشغيل gatsby info --clipboard
، لأنه يتعطل بنفس الخطأ StateStoreProvider
مثل الأوامر الأخرى. عدت إلى إصدار Gatsby الخاص بي مرة أخرى وقمت بتشغيل هذا الأمر. لاحظ أن إصدار Gatsby في الإخراج أدناه غير صحيح .
System:
OS: Windows 10
CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Binaries:
npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD
Languages:
Python: 2.7.16 - C:\Python27\python.EXE
Browsers:
Edge: 44.18362.267.0
npmPackages:
gatsby: ^2.17.7 => 2.17.7
gatsby-source-apiserver: ^2.1.4 => 2.1.4
أواجه نفس المشكلة بعد التحديث من 2.17.10 إلى 2.18.4
شكرا على الإبلاغ!
هل يمكنك أيضًا محاولة ترقية برنامج gatsby-cli؟ إذا لم يساعد ذلك ، فسيكون من المفيد حقًا أن تزودنا بمستودع استنساخ.
شكرا لك! :قلب بنفسجي:
ليس لدي CLI مثبتًا على مستوى العالم. يعتمد المشروع على أوامر npm run <command>
التي بدورها تنفذ gatsby <command>
، باستخدام الإصدار المثبت محليًا من Gatsby.
باستخدام هذا النمط ، لا يُطلب من الأشخاص إلقاء تبعية عالمية على أجهزتهم. (قد يصبح الأمر قبيحًا إذا كنت تعمل في عدة مشاريع ، والتي من المحتمل أن تتطلب إصدارات مختلفة)
واجهت مشكلة مماثلة في وقت سابق اليوم ، ما نجح بالنسبة لي هو تحديث رد فعل ، رد فعل دوم وجاتسبي ، محو node_modules و package-lock.json. أخيرًا ، قمت بتشغيل تثبيت npm مرة أخرى وعمل كل شيء بشكل جيد
يبدو أن تحديث react
و react-dom
، بالإضافة إلى Gatsby ، يعمل. ألا ينبغي أن يسرد غاتسبي الإصدارات الصحيحة من React المتوافقة معها؟
بالأمس قضيت نصف يوم فقط لأكتشف أنه في حالتي ، يعمل بناء / تطوير gatsby بشكل جيد عند تثبيت الخيوط مع الخيوط.
يبدو أن الأمر يتعلق بمشكلة التوافق بين React و Gatsby. إذا كنت تقوم بتثبيت التبعيات من البداية (بدون ملف قفل) ، فسيحصل مدير الحزم الخاص بك (إما الغزل أو npm) على أحدث إصدار (مسموح به بواسطة القيود في package.json)
في حالتي ، تم قفل إصدار التفاعل في package-lock.json
، لذلك لم يتم تحديثه إلى جانب Gatsby حتى عند تثبيت جديد.
أواجه نفس المشكلة. لقد قمت بتحديث gatsby ، و gatsby-cli ، ورد فعل ورد فعل دوم دون نجاح. هل هناك حل نهائي؟
تحرير: أزلت gatsby و gatsby-cli وأعدت تثبيتهما بشكل فردي ويبدو أن هذا أصلحهما. قضية غريبة.
لقد ضربت هذه المشكلة. هذا بسبب وجود نسختين من رد الفعل مثبتين. قم بتشغيل npm ls react
لرؤيتهم. لدي نسخة من رد الفعل المحدد في package.json الخاص بي ، ويبدو أن gatsby / gatsby-cli 2.18.5 له إصدار مختلف من رد الفعل.
علمت بهذه القضية من خلال هذه الصفحة .
ما زلت أحاول إصلاح المشكلة ...
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت react
، react-dom
، و gatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":
[email protected] <redacted the filepath>
├─┬ [email protected]
│ └─┬ [email protected]
│ └── [email protected] deduped
└── [email protected]
أثناء إلغاء الحظر في الوقت الحالي ، لا يزال لدي مخاوف:
1) نسختان من رد الفعل ما زالت موجودة؟ (لست متأكدًا) ، حتى لو كانوا من نفس الإصدار الآن
2) هل ستؤدي تحديثات gatsby المستقبلية إلى حدوث هذه المشكلة مرة أخرى؟
ليس لديك إجابات ، ولكن أعبر عن مخاوفي لكي يأخذها فريق غاتسبي في الاعتبار.
أنا متأكد تمامًا من أن npm ls
مجرد أداة لمساعدتك في فهم شجرة التبعية لمشروعك. من المحتمل أن يكون هناك نسخة واحدة فقط من رد الفعل مثبت. يمكنك الدخول إلى المجلد node_modules
للتأكد ...
واجهت نفس المشكلة بعد تحديث gatsby. لقد رجعت إلى الإصدار السابق "gatsby": "^ 2.13.73" وهو عبارة عن عدة إصدارات قديمة ولكنها أصلحت المشكلة.
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":[email protected] <redacted the filepath> ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] deduped └── [email protected]
هذا عمل معي. شكر!
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":[email protected] <redacted the filepath> ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] deduped └── [email protected]
كما سبق ، فإن هذا الحل أصلح لي أيضًا.
لقد نجحت في حل المشكلة عن طريق ترقية رد فعل و رد فعل دوم إلى 16.12.0 ثم ترقية gatsby إلى 2.18.7.
هام: تأكد من تشغيل "gatsby clean" بعد الترقية ، اكتساب رد فعل ، رد فعل دوم وجاتسبي.
ترقية gatsby إلى 2.18.7 كما اقترحه clarmso فعلت الحيلة بالنسبة لي (رد الفعل هو 16.12.0).
أيضا وجود هذه المشكلة نفسها. تم تحديث رد فعل وجاتسبي ولكن لا تزال تواجه نفس المشكلات. حاولت أيضًا التنظيف بعد التحديث ، استمرت المشكلة.
"غاتسبي": "^ 2.18.11"
"رد فعل": "^ 16.12.0"
"رد فعل دوم": "^ 16.12.0"
أيضا وجود هذه المشكلة نفسها. تم تحديث رد فعل وجاتسبي ولكن لا تزال تواجه نفس المشكلات. حاولت أيضًا التنظيف بعد التحديث ، استمرت المشكلة.
"غاتسبي": "^ 2.18.11"
"رد فعل": "^ 16.12.0"
"رد فعل دوم": "^ 16.12.0"
نفس الشيء بالنسبة لي. حتى يوم أمس كان يعمل بشكل جيد
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":[email protected] <redacted the filepath> ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] deduped └── [email protected]
هذا عمل معي ايضا هل يجري العمل على هذا لإصلاح دائم؟
بسبب هذه التحديثات ، أتلقى الآن تحذيرات أكثر غرابة من StoreStateProvider وأشياء عشوائية في Contentful تعود فارغة على الرغم من وجودها هناك.
لست متأكدًا مما يجري ولكن سأضطر إلى الاحتفاظ بهذا في فرع في الوقت الحالي
أيضا وجود هذه المشكلة نفسها. تم تحديث رد فعل وجاتسبي ولكن لا تزال تواجه نفس المشكلات. حاولت أيضًا التنظيف بعد التحديث ، استمرت المشكلة.
"غاتسبي": "^ 2.18.11"
"رد فعل": "^ 16.12.0"
"رد فعل دوم": "^ 16.12.0"
تمت إزالة مجلد node_modules وملف package-lock.json. ركض تثبيت npm وكل شيء جيد مرة أخرى.
كانت تجربتي مزيجًا من التعليقات المذكورة أعلاه. نظرًا لأنني حذفت مجلد node_modules وكان لدي ملحقات gatsby ، فلن يعمل npm. تثبيت الغزل تم إصلاحه أخيرًا.
لقد أصلحت هذه المشكلة من خلال إعادة تثبيت react
و react-dom
و gatsby
. (https://github.com/gatsbyjs/gatsby/issues/19827#issuecomment-559898690)
قبل
react v16.11.0
react-dom v16.11.0
gatsby v2.17.11
بعد
react v16.12.0
react-dom v16.12.0
gatsby v2.18.12
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":[email protected] <redacted the filepath> ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] deduped └── [email protected]
شكرًا لك ، لقد نجحت معي
أنا شخصياً يجب أن أحذف المجلد node_modules
و package-lock.json
ثم أقوم بترقية react
و react-dom
و gatsby
:
"react": "^16.12.0",
"react-dom": "^16.12.0",
"gatsby": "^2.18.17",
لا تنس تحديث gatsby-cli
إلى أحدث إصدار وتشغيل gatsby clean
بعد ذلك ، gatsby develop
يعمل مثل السحر!
لقد وجدت أن المشكلة تحدث فقط عند استخدام مسجل gatsby الافتراضي. يتم التحكم في المسجل المعين الذي سيتم استخدامه عبر بيئة عملية GATSBY_LOGGER . لا يمكن تكرار المشكلة إذا تم تغيير المسجل الافتراضي على سبيل المثال باستخدام json logger.
export GATSBY_LOGGER=["json"]
npm i && npm run start
التبديل إلى yurnalist
/ json
gatsby مشكلة إصلاح المسجل بالنسبة لي
export GATSBY_LOGGER=["yurnalist"]
واجهت هذه المشكلة اليوم عند تشغيل gatsby develop
في مشروع قديم (آخر مرة قمت بتشغيل تطوير gatsby كانت في الخريف)
لقد أصلحت من خلال عمل مجموعة من الاقتراحات المذكورة أعلاه (مفيدة جدًا!).
يمكن تأكيد هذا العمل:
gatsby clean
- بدأ بهذا لمعرفة ما إذا كان قد تم حلهnode_modules
npm install
لم يتم حلها في هذه المرحلة ، لذا اتبعت النصيحة للقيام بذلك:
npm uninstall react react-dom gatsby
npm install react react-dom gatsby
عمل هذا على أكمل وجه.
تم حذف package-lock.json
node_modules المحذوفة
ركض npm أنا
عملت لي: د
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).
npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":[email protected] <redacted the filepath> ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] deduped └── [email protected]
شكرا على الحل! كان هذا مانعًا رئيسيًا بالنسبة لي. لم تنجح في البداية ، لكنني قمت بإعادة تثبيت gatsby-cli
أيضًا. بعد ذلك ، كان يعمل بشكل جيد.
وصف
بعد تحديث Gatsby من 2.17.7 إلى 2.18.4 ، يؤدي تشغيل أي نوع من أوامر gatsby إلى حدوث خطأ. لا يوجد سياق حرفيًا بالرغم من ذلك.
> gatsby clean The above error occurred in the <StoreStateProvider> component: in StoreStateProvider in App React will try to recreate this component tree from scratch using the error boundary you provided, App. Warning: App: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.
> gatsby build The above error occurred in the <StoreStateProvider> component: ...
بيئة
لسوء الحظ ، لا يمكنني تشغيل
gatsby info --clipboard
، لأنه يتعطل بنفس الخطأStateStoreProvider
مثل الأوامر الأخرى. عدت إلى إصدار Gatsby الخاص بي مرة أخرى وقمت بتشغيل هذا الأمر. لاحظ أن إصدار Gatsby في الإخراج أدناه غير صحيح .System: OS: Windows 10 CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz Binaries: npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD Languages: Python: 2.7.16 - C:\Python27\python.EXE Browsers: Edge: 44.18362.267.0 npmPackages: gatsby: ^2.17.7 => 2.17.7 gatsby-source-apiserver: ^2.1.4 => 2.1.4
واجهت نفس المشكلة! الحل الذي يساعدني هو تثبيت خيوط الغزل وإضافة حقل دقة إلى package.json الخاص بك
https://yarnpkg.com/lang/en/docs/selective-version-resolutions/
كان الخطأ نتيجة استخدام gatsby-cli
داخليًا react
مع ink
لعرض الواجهة الجديدة. كان سبب ذلك هو التطابق الخاطئ للإصدار بين إصدار المشروع react
والإصدار المطلوب بواسطة gatsby
.
يجب أن يمنع تثبيت gatsby-cli
عالميًا (وهو ما نوصي به) حدوث هذه المشكلات على حد علمي. ومع ذلك ، أغلق هذا لأنه لا يوجد أي شيء يحتاج إلى إصلاح في gatsby
فيما يتعلق بهذا.
شكرا جزيلا لكم جميعا! 💜
بالأمس قضيت نصف يوم فقط لأكتشف أنه في حالتي ، يعمل بناء / تطوير gatsby بشكل جيد عند تثبيت الخيوط مع الخيوط.
على نحو فعال ، أدى استخدام الغزل إلى حل المشكلة بالنسبة لي أيضًا
مجرد تشغيل npm update
حل المشكلة بالنسبة لي
يجب أن يمنع تثبيت gatsby-cli عالميًا (الذي نوصي به) حدوث هذه المشكلات على حد علمي. ومع ذلك ، أغلق هذا لأنه لا يوجد أي شيء يحتاج إلى إصلاح في gatsby فيما يتعلق بهذا.
لكن هذا لم ينفع بالنسبة لي. تبديل المسجل إلى yurnalist
أو json
كما هو مذكور أعلاه. لقد قمت أيضًا بإزالة المجلدات public
، .cache
، و node_modules
.
إخراج إصدار غاتسبي:
gatsby -v
Gatsby CLI version: 2.8.27
Gatsby version: 2.18.25
إليك تبعياتي إذا كنت فضوليًا:
"dependencies": {
"@emotion/core": "^10.0.27",
"@emotion/styled": "^10.0.27",
"gatsby": "^2.18.25",
"gatsby-image": "^2.2.39",
"gatsby-plugin-emotion": "^4.1.21",
"gatsby-plugin-google-analytics": "^2.1.33",
"gatsby-plugin-manifest": "^2.2.37",
"gatsby-plugin-netlify": "^2.1.31",
"gatsby-plugin-offline": "^3.0.32",
"gatsby-plugin-react-helmet": "^3.1.21",
"gatsby-plugin-sharp": "^2.3.13",
"gatsby-plugin-web-font-loader": "^1.0.4",
"gatsby-remark-images": "^3.1.42",
"gatsby-remark-prismjs": "^3.3.30",
"gatsby-remark-reading-time": "^1.1.0",
"gatsby-source-filesystem": "^2.1.46",
"gatsby-transformer-remark": "^2.6.48",
"gatsby-transformer-sharp": "^2.3.13",
"prism-themes": "^1.3.0",
"prismjs": "^1.19.0",
"prop-types": "^15.7.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-helmet": "^5.2.1",
"typeface-karla": "0.0.72"
},
هذا هو الخطأ الذي تلقيته:
gatsby develop
ERROR
The above error occurred in the <StoreStateProvider> component:
in StoreStateProvider
in App
React will try to recreate this component tree from scratch using the error boundary you provided, App.
ERROR
Warning: App: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.
ERROR
UNHANDLED REJECTION Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
- react.development.js:1590 resolveDispatcher
[project]/[gatsby]/[react]/cjs/react.development.js:1590:13
- react.development.js:1618 useState
[project]/[gatsby]/[react]/cjs/react.development.js:1618:20
- context.js:17 StoreStateProvider
[project]/[gatsby]/[gatsby-cli]/lib/reporter/loggers/ink/context.js:17:41
- react-reconciler.development.js:6036 renderWithHooks
[project]/[react-reconciler]/cjs/react-reconciler.development.js:6036:18
- react-reconciler.development.js:8570 mountIndeterminateComponent
[project]/[react-reconciler]/cjs/react-reconciler.development.js:8570:13
- react-reconciler.development.js:9938 beginWork$1
[project]/[react-reconciler]/cjs/react-reconciler.development.js:9938:16
- react-reconciler.development.js:11563 Object.invokeGuardedCallbackImpl
[project]/[react-reconciler]/cjs/react-reconciler.development.js:11563:10
- react-reconciler.development.js:11740 invokeGuardedCallback
[project]/[react-reconciler]/cjs/react-reconciler.development.js:11740:31
- react-reconciler.development.js:15778 beginWork$$1
[project]/[react-reconciler]/cjs/react-reconciler.development.js:15778:7
- react-reconciler.development.js:14696 performUnitOfWork
[project]/[react-reconciler]/cjs/react-reconciler.development.js:14696:12
للمطورين اليائسين الذين يبحثون عن مشاكل لا ينبغي أن توجد في المقام الأول فقط:
-إزالة مجلد node_modules
-حذف package.lock.json
- تشغيل npm أنا
بعد وضع اليد على حالة التكاثر لذلك:
يبدو أن هذا يأتي من حالة تثبيت npm للإصدار الذي حدده المستخدم من react
للتثبيت في node_modules
، بينما سيتم تثبيت إصدار رد الفعل gatsby-cli
في node_modules/gatsby/node_modules
.
نظرًا لأنه يبدو أن ink
قد تم تثبيته في node_modules
فإن وارداته react
ستستخدم واردات مختلفة عن الواردات gatsby-cli
مما يؤدي إلى الحالة:
- قد يكون لديك أكثر من نسخة واحدة من React في نفس التطبيق
راجع https://fb.me/react-invalid-hook-call للحصول على نصائح حول كيفية تصحيح هذه المشكلة وحلها.
و https://reactjs.org/warnings/invalid-hook-call-warning.html#duplicate -react يشرح هذا جيدًا ، لكن الاقتراح فقط هناك (لاستخدام yarn resolutions
لن ينجح لأن هذه مشكلة كيف يبدو أن npm
يقرر هيكل node_modules
وليس الغزل)
الحل الوحيد (المبتكر جدًا في ذلك) الذي يتبادر إلى ذهني الآن هو تجاوز دقة الوحدة النمطية Node.js والرمز الثابت react
إلى واحد محدد بواسطة gatsby-cli
. قد يكون من الجيد القيام بذلك (هكذا يتم تنفيذ PnP على الأقل في الغزل v1)
بعد القليل من الأفكار - الخيار الآخر هو استخدام createRequireFromPath
من gatsby-core-utils
(https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-core-utils/README .md # cicturesequirefrompath) واستخدم ذلك في gatsby-cli لتحميل نفس الإصدار من رد الفعل مثل ink
(هذا أقل اختراقًا بشكل ملحوظ مع فرصة أقل للمشكلات المحتملة التي قد تأتي من التحميل الزائد لحل الوحدة Node.js) .
المشكلة الوحيدة في ذلك هي إذا استخدمنا مكونات الطرف الثالث ink
( ink-spinner
هو واحد فقط نستخدمه الآن) وسيتم تثبيتها في دليل مختلف عن ink
.
يمكننا حل هذه المشكلات المحتملة من خلال بيع ink-spinner
داخل gatsby-cli
والتأكد من عدم استخدام مكونات الطرف الثالث كحزم (والمورد جميعًا)
- تم التحرير:
يجب توخي الحذر بشأن ما ورد أعلاه - يتطلب ink
node >= 16.8.0
لذلك سنحتاج إلى التأكد من أننا لا نستخدم ميزات من react >= 16.8.1
فصاعدًا في gatsby-cli
- مطلوب المزيد من البحث ، لكنه واعد
تحديث: المسار createRequireFromPath
لن يعمل ، لأن npm
لا يمكنه "بشكل صحيح" حل التسلسل الهرمي node_modules
ضوء dependencies
و peerDependencies
مقدم من ink
و gatsby-cli
.
التغيير "السريع" هو خفض متطلبات الإصدار react
(https://github.com/gatsbyjs/gatsby/pull/21522) لتقليل عدد السيناريوهات التي ستحدث فيها هذه المشكلة.
لكنها لا تصلح هذا تمامًا. لذلك من المحتمل أن نقوم بتجميع إصدار react
في gatsby-cli
لحل بديل npm
عدم القدرة على إنشاء تسلسل هرمي node_modules
بشكل صحيح (أو تجاوز دقة وحدة Node.js ، ولكن هذا اختراق يمكن أن يكون له عواقب غير متوقعة ، لذا أود تجنب القيام بذلك إذا كان هناك أي حلول أخرى)
تحديث آخر - أجرينا بعض التحديثات على gatsby
للحد من المشاريع المتأثرة به - تم نشره في [email protected]
- لكنه لا يزال يتطلب منك إعادة تعيين / حذف package-lock.json
.
إذا لم يؤد ذلك إلى حل المشكلة - فمن المحتمل أن يكون لديك react
/ react-dom
مثبتًا في package.json
والإصدار أقل من [email protected]
- ليس لدينا إصلاح لذلك حتى الآن ولكننا ننظر إليه كخطوة تالية - الحل المحتمل هو استخدام yarn
بدلاً من npm
في الوقت الحالي (لم يتم التحقق).
إذا كان أي شخص مهتمًا بالأشياء التقنية ، فيرجى التحقق من التعليق على طلب السحب الأولي الذي حاولت إصلاحه - https://github.com/gatsbyjs/gatsby/pull/21508#issuecomment -586753917 والخطة الآن هي استخدام بعض التجميع (ربما microbundle
) لتجميع react
في gatsby-cli
لذلك لا يحاول استخدام react
من node_modules
وسيحصل فقط على هذا مضمن مباشرة في gatsby-cli
)
لقد جربت الكثير من هذه التعليقات ، ولكن بصفتي شخصًا لم يستخدم npm
لأي جزء من العملية ، اعتقدت أنني سأكتب ما يناسبني على وجه التحديد.
الإعداد الخاص بي:
Win10 ، تم تثبيت الغزل عبر msi. ، Gatsby عبر yarn global
. استخدام yarn
لجميع مشاريع Gatsby.
مشكلة:
أي gatsby {command}
سينتج عنه الخطأ StoreStateProvider
، لكن npx gatsby {command}
.
المحلول:
.cache
و /node_modules
إذا كانا موجودين.react
و react-dom
، "^16.13.0"
حتى كتابة هذه السطور.yarn global remove gatsby gatsby-cli
لإزالة CLI التالف.yarn global add gatsby gatsby-cli
لإعادة تثبيت CLI.gatsby -v
أو gatsby {command}
ويجب أن يعمل.انتاج:
> gatsby -v
Gatsby CLI version: 2.9.0
Gatsby version: 2.19.23
مرحبا!
لقد ساد الهدوء هذه القضية. الهدوء المخيف. 👻
نتلقى الكثير من المشكلات ، لذلك نقوم حاليًا بإغلاق المشكلات بعد 30 يومًا من عدم النشاط. لقد مرت 20 يومًا على الأقل منذ آخر تحديث هنا.
إذا فاتنا هذه المشكلة أو إذا كنت تريد إبقائها مفتوحة ، فيرجى الرد هنا. يمكنك أيضًا إضافة التصنيف "ليس قديمًا" للإبقاء على هذه المشكلة مفتوحة!
كتذكير ودي: أفضل طريقة لرؤية هذه المشكلة ، أو أي مشكلة أخرى ، يتم إصلاحها هي فتح طلب سحب. تحقق من gatsby.dev/contribute لمزيد من المعلومات حول فتح العلاقات العامة ، وقضايا الفرز ، والمساهمة!
شكرًا لكونك جزءًا من مجتمع Gatsby! 💪💜
على الرغم من أن هذا لا يحتوي على الكثير من النشاط ، لا أعتقد أنه قديم
كنت أواجه نفس المشكلة ، ما فعلته هو حذف json.lock وتشغيل أمر الغزل لتحديث التبعيات. وعاد كل شيء إلى العمل بشكل طبيعي.
لقد واجهت نفس المشكلة التي قمت بحلها عن طريق حذف مجلد "node_modules" وملف "package-lock.json" ثم أمر "npm install".
مرحبا!
لقد ساد الهدوء هذه القضية. الهدوء المخيف. 👻
نتلقى الكثير من المشكلات ، لذلك نقوم حاليًا بإغلاق المشكلات بعد 30 يومًا من عدم النشاط. لقد مرت 20 يومًا على الأقل منذ آخر تحديث هنا.
إذا فاتنا هذه المشكلة أو إذا كنت تريد إبقائها مفتوحة ، فيرجى الرد هنا. يمكنك أيضًا إضافة التصنيف "ليس قديمًا" للإبقاء على هذه المشكلة مفتوحة!
كتذكير ودي: أفضل طريقة لرؤية هذه المشكلة ، أو أي مشكلة أخرى ، يتم إصلاحها هي فتح طلب سحب. تحقق من gatsby.dev/contribute لمزيد من المعلومات حول فتح العلاقات العامة ، وقضايا الفرز ، والمساهمة!
شكرًا لكونك جزءًا من مجتمع Gatsby! 💪💜
مرحبًا مرة أخرى!
لقد مرت 30 يومًا منذ حدوث أي شيء بشأن هذه المشكلة ، لذلك سيقوم روبوت الحي الودود (هذا أنا!) بإغلاقه.
يُرجى الانتباه إلى أنني مجرد روبوت ، لذا إذا أغلقت هذه المشكلة عن طريق الخطأ ، فأنا HUMAN_EMOTION_SORRY
. لا تتردد في إعادة فتح هذه المشكلة أو إنشاء مشكلة جديدة إذا كنت بحاجة إلى أي شيء آخر.
كتذكير ودي: أفضل طريقة لرؤية هذه المشكلة ، أو أي مشكلة أخرى ، يتم إصلاحها هي فتح طلب سحب. تحقق من gatsby.dev/contribute لمزيد من المعلومات حول فتح العلاقات العامة ، وقضايا الفرز ، والمساهمة!
شكرًا مرة أخرى لكونك جزءًا من مجتمع Gatsby! 💪💜
: little_frowning_face: ما زلت أستخدم yurnalist
كمسجل افتراضي. لم أشاهد أي تحديث هنا يفيد بأن هذا قد تم إصلاحه.
للمطورين اليائسين الذين يبحثون عن مشاكل لا ينبغي أن توجد في المقام الأول فقط:
-إزالة مجلد node_modules
-حذف package.lock.json
- تشغيل npm أنا
لقد نجح هذا بالنسبة لي ...
نجحت عملية إلغاء التثبيت وإعادة التثبيت (الإصدار 2.23.11) من gatsby
.
استخدام تثبيت الغزل ، يجب أن يعمل
إذن ما فعلته (بعد قراءة كل شيء حتى الآن) هو أنني قمت بتغيير الإصدار في ملف package.json لـ Gatsby 2.18.7 وتشغيل npm i
لقد نجح
لا تزال تواجه هذه المشكلة.
$: gatsby -v
Gatsby CLI version: 2.12.66
Gatsby version: 2.23.12
خطوات التكاثر:
gatsby new
لإنشاء مشروع جديدnpm i --save node-sass gatsby-plugin-sass
gatsby develop
نتيجة
$ gatsby develop
ERROR
The above error occurred in the <StoreStateProvider> component:
in StoreStateProvider
in App
React will try to recreate this component tree from scratch using the error boundary you provided, App.
ERROR
Warning: App: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.
ERROR
UNHANDLED REJECTION Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
Error: Invalid hook call. Hooks can only be called inside of the body of a fun ction component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as Reac t DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
- react.development.js:1465 resolveDispatcher
[bug]/[gatsby]/[react]/cjs/react.development.js:1465:13
- react.development.js:1496 useState
[bug]/[gatsby]/[react]/cjs/react.development.js:1496:20
- context.js:21 StoreStateProvider
[bug]/[gatsby]/[gatsby-cli]/lib/reporter/loggers/ink/context.js:21:49
- react-reconciler.development.js:6036 renderWithHooks
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:6036:18
- react-reconciler.development.js:8570 mountIndeterminateComponent
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:8570:13
- react-reconciler.development.js:9938 beginWork$1
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:9938:16
- react-reconciler.development.js:11563 Object.invokeGuardedCallbackImpl
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:11563:10
- react-reconciler.development.js:11740 invokeGuardedCallback
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:11740:31
- react-reconciler.development.js:15778 beginWork$$1
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:15778:7
- react-reconciler.development.js:14696 performUnitOfWork
[bug]/[ink]/[react-reconciler]/cjs/react-reconciler.development.js:14696:12
تم إصلاح ذلك من خلال تنفيذ التعليمات من خلال القيام بما يلي كما هو موضح أعلاه
إذن ما فعلته (بعد قراءة كل شيء حتى الآن) هو أنني قمت بتغيير الإصدار في ملف package.json الخاص بـ Gatsby 2.18.7 وتشغيله
npm i
لقد نجحت
عملت إزالة مجلدات .cache و node_modules و package-lock.json ثم إعادة التثبيت بالنسبة لي.
لقد قدمت ترقية للغزل وعملت معي.
تعد إزالة node_modules
وذاكرة التخزين المؤقت npm وملفات package-lock.json
حلاً غير عملي لما يمكن أن يكون تغييرًا فاصلًا في كل مرة تتم فيها إضافة مكون إضافي أو أي تبعية.
كانت المشكلة الأساسية في حالتي هي أن مشروعًا جديدًا يتم توفيره باستخدام gatsby new [path] [starter]
يستخدم ضمنيًا yarn
لتشغيل التبعيات إذا كان yarn
مثبتًا ومتاحًا ( which yarn
يعود سلسلة غير فارغة). ستفشل المحاولات اللاحقة لتثبيت المكونات الإضافية / التبعيات باستخدام npm
مع وجود أخطاء مشفرة كما هو مذكور أعلاه لأن npm
و yarn
حلول إدارة الحزم بشكل متبادل.
سيكون من الأفضل لـ gatsby cli ألا يتحول إلى yarn
بدون خيار سطر أوامر يطلبه. كان الحل بالنسبة لي هو إلغاء تثبيت الغزل وإعادة تهيئة المشروع بحيث يمكن استخدام npm
حصريًا.
https://github.com/gatsbyjs/gatsby/pull/26887 (تم دمجه بالأمس وتم إصداره اليوم) والذي يزيل react
من تبعيات gatsby-cli
وبدلاً من ذلك يجمعها عندما ننشر الحزم - ما هذا يعني أنه لا ينبغي أن ينتج عنه نسخ متعددة غريبة من react
في node_modules
والتي تسبب كل أنواع المشاكل.
@ duchess-toffee قد تجد https://github.com/gatsbyjs/gatsby/pull/26856 مثيرًا للاهتمام (لم يتم دمجه / إصداره بعد) - في حين أنه لن يعود تلقائيًا من yarn
إلى npm
كمدير افتراضي للحزم - ستتمكن من تشغيل gatsby options set pm npm
لقد واجهت مشكلة مرتبطة على ما يبدو بهذه المشكلة # 26998
تم الحل باستخدام تهيئة حزمة ويب مخصصة لحل react
:
"" شبيبة
// file: gatsby-node.js
مسار const = يتطلب ('مسار')
module.exports = {
onCreateWebpackConfig: ({إجراءات}) => {
Actions.setWebpackConfig ({
حل: {
الاسم المستعار: {
'رد فعل': path.resolve (path.join (__ dirname، 'node_modules'، 'رد فعل'))
}
}
})
}
}
""
json
// file: package.json
{
"dependencies": {
"@mdx-js/mdx": "^1.6.18",
"@mdx-js/react": "^1.6.18",
"gatsby": "^2.24.64",
"gatsby-plugin-layout": "^1.3.11",
"gatsby-plugin-mdx": "^1.2.40",
"gatsby-plugin-sass": "^2.3.12",
"gatsby-source-filesystem": "^2.3.30",
"gatsby-telemetry": "^1.3.35",
"node-sass": "^4.14.1",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-ionicons-v5": "^1.2.0",
"three": "^0.120.1"
}
}
كل شيء يسير بسلاسة الآن.
التعليق الأكثر فائدة
لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت
react
،react-dom
، وgatsby
. لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).npm ls react
نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":