Gatsby: خطأ "StoreStateProvider" غامض لجميع أوامر gatsby

تم إنشاؤها على ٢٧ نوفمبر ٢٠١٩  ·  58تعليقات  ·  مصدر: gatsbyjs/gatsby

وصف

بعد تحديث 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
stale? needs reproduction bug

التعليق الأكثر فائدة

لقد أصلحت المشكلة! لقد استخدمت npm لإلغاء التثبيت ، ثم (أعد) تثبيت react ، react-dom ، و gatsby . لقد فعلت ذلك بالترتيب الدقيق (لا أعتقد أن الطلب سيكون مهمًا ، لكن لمعلوماتك في حال كان الأمر كذلك).

npm ls react نسختين ، لكنهما متماثلان مع وضع علامة "مُستبعد":

[email protected] <redacted the filepath>
├─┬ [email protected]
│ └─┬ [email protected]
│   └── [email protected]  deduped
└── [email protected]

ال 58 كومينتر

أواجه نفس المشكلة بعد التحديث من 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 كانت في الخريف)

لقد أصلحت من خلال عمل مجموعة من الاقتراحات المذكورة أعلاه (مفيدة جدًا!).

يمكن تأكيد هذا العمل:

  1. gatsby clean - بدأ بهذا لمعرفة ما إذا كان قد تم حله
  2. حذف node_modules
  3. npm install

لم يتم حلها في هذه المرحلة ، لذا اتبعت النصيحة للقيام بذلك:

  1. npm uninstall react react-dom gatsby
  2. 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 مما يؤدي إلى الحالة:

  1. قد يكون لديك أكثر من نسخة واحدة من 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} .

المحلول:

  1. احذف .cache و /node_modules إذا كانا موجودين.
  2. تأكد من تحديث react و react-dom ، "^16.13.0" حتى كتابة هذه السطور.
  3. قم بتشغيل yarn global remove gatsby gatsby-cli لإزالة CLI التالف.
  4. قم بتشغيل yarn global add gatsby gatsby-cli لإعادة تثبيت CLI.
  5. قم بتشغيل 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

خطوات التكاثر:

  1. استخدم gatsby new لإنشاء مشروع جديد
  2. تثبيت sass باستخدام npm i --save node-sass gatsby-plugin-sass
  3. تشغيل 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" } }

كل شيء يسير بسلاسة الآن.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات