Next.js: لا يمكن التنقل في التطوير (توقف جهاز التوجيه بعد مرور بعض الوقت)

تم إنشاؤها على ٥ نوفمبر ٢٠١٨  ·  50تعليقات  ·  مصدر: vercel/next.js

تقرير الشوائب

وصف الخطأ

إما Link أو Router يتوقف عن العمل عند القيام بالتوجيه من جانب العميل. يبدو أن HMR قد يقطع الانتقال بين الصفحات. يحدث ذلك بشكل متكرر إذا ترك التطبيق خاملاً أو في الخلفية لبعض الوقت (على الرغم من أنني جربته أثناء النقر دون أن يكون خاملاً)

لإعادة إنتاج

خطوات إعادة إنتاج السلوك ، يرجى توفير مقتطفات التعليمات البرمجية أو المستودع:

  1. استنساخ هذا الريبو (https://github.com/malimccalla/next-routing-issue)
  2. تثبيت التبعيات npm install
  3. قم بتشغيل الخادم npm run dev
  4. قم بزيارة جميع الصفحات بالنقر فوق الروابط
  5. اذهب لصنع القهوة (اترك الصفحة خامدة لمدة دقيقتين تقريبًا)
  6. حاول زيارة جميع الصفحات بالنقر فوق الروابط
  7. بعض الروابط لا تنتقل إلى الصفحة الخاصة بها 😔

سلوك متوقع

أتوقع أن أتمكن من زيارة جميع الصفحات الفردية

السلوك الفعلي

الصفحة لا تنتقل إلى مسارات معينة. تحديث الصفحة سيصلحها

لقطات

كلا الرابطين "حول" و "جهة الاتصال" لا يعملان (لاحظ سجل HMR في المحاولة الأولى لكل مسار). بعد تحديث الصفحة يعملون كما هو متوقع. إذا تركت التطبيق خاملاً لمدة دقيقتين تقريبًا مرة أخرى ، فسيبدأ من جديد مع المشكلة

next-issue

معلومات النظام

  • mac Mojave 10.14.0 تحديث
  • كروم
  • next.js v7.0.2

سياق إضافي

مع فتح وحدة التحكم ، يمكنك رؤية أن حدث جهاز التوجيه routeChangeStart إطلاقه ولكن routeChangeComplete لا يحدث أبدًا.

bug p1

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

أنا أحقق في هذه المشكلة الآن.

ال 50 كومينتر

لدي نفس المشكلة

أرى هذا أيضًا في بيئة إنتاج ، لذلك لست متأكدًا من أن HMR هي المسؤولة الوحيدة عن هذه المشكلة

ernerock قمت بنشر المثال أعلاه هنا ولكن لا يبدو أن المشكلة تحدث بمجرد البث المباشر. هل كنت قادرًا على التكاثر في بيئة إنتاج؟

malimccalla يبدو أن

import 'react-alice-carousel/lib/alice-carousel.css';

سلوك التنقل هو نفسه الذي أبلغت عنه. يبدو أن هناك مشكلة في "@ zeit / next-css"

يبدو أنه تم الإبلاغ عنه بالفعل في رقم 5291 ، يمكن "حله" مؤقتًا عن طريق استيراد ملف css وإفراغه في _app.js

ernerock غريب جدًا ، فقد تكون مرتبطة ببعض بطريقة ملتوية!

نفس المشكلة هنا ، لدي صفحات تم إعدادها كـ / home و / home / subpage ، ثم إذا حاولت التنقل من / home إلى / home / subpage باستخدام Router.push ، أو باستخدام Router HOC أو حتى Link فإنه لا يعمل.

حسنًا ، لدي الآن المزيد من المعلومات ، حاولت إعادة تسمية / من المنزل إلى / المنزل / الترحيب وما زالت الحالة الموضحة أعلاه لا تعمل معي

@ maciej-ka آه نعم يمكنني أن أؤكد أنه يحدث أيضًا مع push ليس فقط Link . سوف يغير العنوان ، لأنه مضلل بعض الشيء.

timneutkens آسف ل @ أنت أعلم أن هناك الكثير من القضايا الأخرى ولكن هل هناك أي فرصة يمكننا أن نحصل على بعض العيون على هذا؟ لقد كنت أحاول الوصول إلى الجزء السفلي منه لمدة أسبوع الآن دون حظ وهو بالفعل يعيق التطوير

من المحتمل أن يكون مرتبطًا بإدخالات عند الطلب والتخلص منها

لقد قمت ببعض الحفر ويبدو أنه يحدث بسبب التخلص من الصفحات. بمجرد ظهور هذا السجل ، لا يمكن الانتقال إلى الصفحات التي تم التخلص منها

> Disposing inactive page(s): /

لدي القليل من الوقت الليلة للقيام بغطس أعمق ويمكنني أن أفتح العلاقات العامة لإصلاحها. timneutkens شكرًا على البصيرة الأولية ، اسمحوا لي أن أعرف إذا كنت تعتقد أن هناك أي جزء من هذا الملف يجب أن أبحث عنه على وجه الخصوص

لقد ألقيت نظرة على محاولة إصلاح هذا ولكن هناك الكثير مما يحدث في الملفات ذات الصلة ولسوء الحظ لم أتمكن من الوصول إلى الجزء السفلي منها. بالنسبة لأي شخص آخر لديه هذه المشكلة ، كحل بديل حالي ، أستخدم هذا التكوين في next.config.js لتمديد المدة قبل التخلص من الصفحات.

  onDemandEntries: {
    // period (in ms) where the server will keep pages in the buffer
    maxInactiveAge: 25 * 1000,
    // number of pages that should be kept simultaneously without being disposed
    pagesBufferLength: 5,
  },

لدي هذه المسألة أيضا.

هل هناك من يبحث في هذا؟ لدي أيضًا هذه المشكلة ولكن ليس بالضرورة لجميع المسارات. من العشوائي المسار / المسارات التي تصبح غير مستجيبة ولكنها جميعها تفعل ذلك في النهاية.

لا يمكنني النظر في الأمر الآن لأنني أركز على مشكلة الخادم / lambdas التالي ، ولكنها على الأرجح مرتبطة بإدخالات عند الطلب.

نعم ، بالتأكيد. يحدث بعد التخلص منه.

نفس الشيء معي.

هل يمكن لشخص أن يؤكد لي أن هذه ليست مشكلة في الإنتاج؟

هل يمكن لشخص أن يؤكد لي أن هذه ليست مشكلة في الإنتاج؟

في وضع الإنتاج ، لا بأس ، بعد أن قمت بتغيير ENV للإنتاج ، كل شيء يسير على ما يرام

لدي هذا في كل من التطوير والإنتاج. لا يهم إذا كانت الصفحة غير نشطة ، وما إلى ذلك. يمكن أن يكون لدي تحميل جديد ولن يعمل. في ديف ، وحدة تحكم الخادم
> Building page: /contact
WAIT Compling...
success client complied in 462ms
لكن الصفحة لا تظهر في العميل أبدًا. في نفس الوقت ، على وحدة تحكم العميل:
[HMR] bundle rebuilding ، فإن وحدة تحكم الخادم تقدم:
Disposing of inactive page(s): /, /contact

إذا قمت بكتابة mysite.com/contact في المتصفح ، فسيتم تحميله على ما يرام.
لقد جربت العمل في next.config.js من maxInactiveAge و pagesBufferLength دون جدوى.

[كان يأمل أن يكون الأمر في التطوير كما قال الكثيرون]

تحرير: لدي import 'node-mod/dist/theme.css في أحد المكونات. لقد نقلت هذا الاستيراد إلى _app.js وهذا Link يعمل.

نفس المشكلة هنا ، المسار لا يكتمل في وضع dev بعد التخلص منه. انه حقا مزعج

roytsang بدلاً من قول "نفس المشكلة" استخدم 👍 في هذه القضية. لم يتم أخذ كتيب +1 في الاعتبار عند الفرز على 👍

لدي نفس المشكلة. لقد بدأت اليوم فقط بعد أن بدأت في استخدام Head from next / head في التطبيق الخاص بي لتطبيق العنوان والرمز المفضل.

Atmospheres هل جربت malimccalla الحل البديل؟ لم يكن إصلاحًا كاملاً ولكنه عمل بالنسبة لي كحل بديل.

لم أتمكن من الوصول إليه بعد ، لكنني سأفعل ذلك قريبًا. لقد اعتقدت للتو أن المزيد من المعلومات حول وقت ظهور المشكلة قد يكون مفيدًا لشخص يبحث في الإصلاح.

تحديث: لقد أجريت بعض الاختبارات هذا الصباح وهذا ما صادفته.

بدأت المشاكل بالأمس ، الشيء الجديد الوحيد الذي قمت بتنفيذه هو "الرأس من التالي". أدركت أنني غيرت الرأس في _document ، المستخدم للتحميل في الأنماط ، إلى Head. أضفت أيضًا Head إلى _app.js لتعيين العنوان والأيقونة المفضلة. لم تؤد إزالة الرأس في _app.js إلى إصلاح هذا الأمر بالنسبة لي. لم تؤدي إزالة الرأس في كل من _app و _document أيضًا إلى حل المشكلة. لقد جربت شيئًا أخيرًا ، لقد عدت إلى العنوان _document مرة أخرى إلى رأسه وتركت الرأس في _app لتعيين العنوان والأيقونة المفضلة ، والآن انتهت المشكلة.

إذا عادت المشكلة لأي سبب من الأسباب ، فسوف أقوم بالتحديث هنا مرة أخرى. آمل أن تساعد هذه المعلومات في الوصول إلى الإصلاح.

التحديث 2: استمرت المشكلة ، على الرغم من أنها تظهر بشكل أقل تكرارًا مما حدث. لقد لاحظت أنه عند حدوث ذلك ، أرى أن علامة البرنامج النصي التي تقوم بتحميل js لتلك الصفحة مكررة. على سبيل المثال ، في المرة الأولى التي أقوم فيها بتحميل الصفحة "x" يتم إضافتها

هل من الممكن إخبارنا بما كانت المشكلة وكيف يمكننا حل المشكلة إذا لم نتمكن من الترقية الآن؟ على سبيل المثال ، هل يتعلق الأمر بتحميل css؟ هل هو شيء يمكن تغييره في التكوين؟

@ jon64digital كتبت كتابة كاملة لهذه المشكلة في # 5994 ، يمكنك

timneutkens أنا أستخدم 8.1.1-canary.24 ولا يزال الخطأ موجودًا بالنسبة لي. اي فكرة؟

تحرير: اكتشف ما يحدث. لست متأكدًا من سبب ذلك ...:
كان لدي ملف index.tsx و index.less. كنت أستخدم cssModules في ملف netxt.config.js الخاص بي (باستخدام withLess). عند تحميل /subpage ووجود ارتباط يشير إلى / (والذي يقوم باستيراد أنماط مثل هذا: import css from './index.less'; ) ، فسيتم تحميل البرنامج النصي ديناميكيًا ( http://localhost:3000/_next/static/development/pages/index.js ) ولكن لم يتم تقديمها. في الواقع ، لا يتغير عنوان url على الإطلاق ، إنه مثل عالق ... أدت إزالة استيراد الملفات الأقل إلى حل المشكلة.

وات تفعل؟

Edit2: يبدو أنني أواجه https://github.com/zeit/next-plugins/issues/282

ما زلت يحدث هذا في بعض الأحيان أيضًا على 8.1.0 . سأحاول إعادة إنتاج وفتح مشكلة جديدة

بالنسبة لي أيضًا ، ليس التنقل إلى / حول المسار يعطي 404 في كل مرة! لست متأكدا ما هي مشكلة التوجيه !؟ : /

تبعيات package.json:

"dependencies": { "cross-env": "^5.2.0", "express": "^4.17.0", "next": "^8.1.0", "react": "^16.8.6", "react-dom": "^16.8.6" }

jsbimra يرجى دائمًا تقديم نسخة كاملة. من المستحيل النظر في "يحدث لي"

jsbimra يرجى _always_ تقديم نسخة كاملة. من المستحيل النظر في "يحدث لي"

وجدت مشكلة ، فقد كانت مرتبطة بالخطوة المفقودة في إنشاء صفحة أسفل مجلد الصفحة لـ next.js ، آسف للإزعاجtimneutkens

أي حل لهذا؟ هل يحدث هذا أيضًا في الإنتاج؟ لأنه يحدث لي في dev ، الخطأ من 2018 و 22 مايو / 2019 لا يزال هذا الخطأ لم يتم إصلاحه ، إذا لم يحدث هذا في الإنتاج ، فأنا لست قلقًا ، ولكن إذا حدث ذلك ، فهذا مشكلة كبيرة حقًا ...

الخطأ من 2018 ومايو / 22/2019 لا يزال هذا الخطأ لم يتم إصلاحه

بناءً على الاستنساخ المقدم من malimccalla ، تم إصلاحه.

إذا لم يحدث هذا في الإنتاج ، فأنا لست قلقًا

لا.

لاحظ أن هذا التعليق لن يحل مشكلتك. كما قيل عدة مرات من قبل:

يرجى دائما تقديم نسخة كاملة. من المستحيل النظر في "يحدث لي"

لدي نفس المشكلة مع أحدث إصدار (8.1.0).

لدي نفس المشكلة مع أحدث إصدار (8.1.0).

لقد أجبت الآن حوالي 3 مرات بنفس الرسالة بالضبط. يرجى تقديم نسخة .

لاحظ أن هذا التعليق لن يحل مشكلتك. كما قيل عدة مرات من قبل:

يرجى دائما تقديم نسخة كاملة. من المستحيل النظر في "يحدث لي"

لقد انزعجت من مشكلة عدم القدرة على الوصول إلى ~ / index.tsx .
لكنني وجدت السبب أخيرًا!

لقد استخدمت مكتبة تسمى react-activity ، لكن في نفس الوقت كنت بحاجة إلى استيراد css.

عندما أقرأ نفس المغلق مرتين في أماكن مختلفة ، يبدو أنني لا أستطيع الهجرة.
كنتيجة لقراءة _app.tsx ، تمكنت من الترحيل بنجاح.

timneutkens حسنًا ، بالتأكيد ، يمكنني زيادة وقت التخلص ، ولكن ماذا عن الموقف الذي يبدأ فيه الخادم لأول مرة؟ لن أتمكن من الانتقال إلى تلك الصفحات برمجيًا لأنها لم يتم إنشاؤها بعد. 🤔

لقد أجبت الآن حوالي 4 مرات بنفس الرسالة بالضبط. يرجى تقديم نسخة .

لاحظ أن هذا التعليق لن يحل مشكلتك. كما قيل عدة مرات من قبل:

يرجى دائما تقديم نسخة كاملة. من المستحيل النظر في "يحدث لي"

للإجابة على السؤال المحدد ، يتم إنشاء الصفحات حسب الطلب ، ويعمل هذا النظام بشكل جيد. أفترض أن لديك شيئًا في التكوين الخاص بك يجعل webpack لا يقوم بتشغيل الملف كمبنى منتهي. ومع ذلك فمن الصعب / المستحيل القول لأنه لا يوجد تكاثر.

لاحظ أيضًا أن المشكلة المحددة ، كما ذكرنا سابقًا ، قد تم إصلاحها بالفعل وأن زيادة المهلة لا تساعد في حل المشكلة المحددة التي تواجهها. ولهذا السبب أستمر في طلب الإنجاب 🙏.

نحن سعداء للغاية بالنظر في هذا الأمر وقضاء بعض الوقت فيه.

لقد أنشأت مشروعًا جديدًا بالأمس وعمل جيدًا. يجب أن يكون هناك شيء محدد حول مشروعي يجعله لا يعمل. سأحاول تفكيكها تدريجيًا في وقت لاحق اليوم وأرى عند هذه النقطة تختفي المشكلة.

أود أن ألقي نظرة إذا كان بإمكانك إعادة إنتاجها بشكل موثوق.

الخبر السار هو أنني تمكنت من تحديد الخطأ. النبأ السيئ هو أن مشكلة مشروعي لم تكن مختلفة عما ذكره الآخرون في هذا الموضوع.

لذلك إذا كانت المشكلة متعلقة بـ CSS وحدود التخلص ، ومن المفترض أنه تم حلها ، فلا بد أنني أقوم بشيء خاطئ. هل هذا حيث وضعت هذه؟

module.exports = withCSS({ onDemandEntries: { maxInactiveAge: 1000 * 60 * 60 } })

الاستنساخ: https://github.com/dydokamil/next-js-router-bug

تضمين التغريدة
إنه خطأ معروف: https://github.com/zeit/next-plugins/issues/282
يمكنك "حل" استيراد ملف CSS فارغ.

يمكنني الحصول على هذا لإعادة الإنتاج بشكل موثوق عبر أوضاع التطوير والإنتاج والتصدير الثابت ولم يساعد أي من الحلول البديلة لملف css onDemandEntries أو الفارغة.

كانت الطريقة الوحيدة لإصلاح المشكلة هي إزالة import 'highlight.js/styles/color-brewer.css'; من مكوِّن النص الأساسي في صفحات منشورات المدونة الخاصة بي.

أي مثيل <Link> يشير إلى صفحة منشور مدونة سيفشل في التحميل ولكن لا يزال يتم إسقاط http://localhost:3000/_next/static/development/pages/post.js على الصفحة عند النقر على <Link> . التعليق على أن استيراد css ، <Link> s إلى منشورات المدونة يعمل بشكل مثالي. Uncomment وجميع <Link> s يفشلون في تحميل مشاركات المدونة.

إن الوصول إلى أي من مسارات صفحات نشر المدونة هذه يعمل بشكل جيد ، فالخطأ مرتبط فقط بجانب العميل التوجيه المعتمد. حدث هذا بعد الترقية من الإصدار 6 إلى الإصدار 8.

لقد قمت في البداية بضرب هذا بـ @zeit/next-css ولكن يمكنني تكرار هذه المشكلة بنفس الطريقة بعد التبديل في @zeit/next-sass واستيراد ملف .scss. في الوقت الحالي ، أقوم فقط بتحميل هذه الأنماط باستخدام styled-components drop @zeit/next-css . بعد مراجعة https://www.npmjs.com/package/@zeit/next -css و https://www.npmjs.com/package/@zeit/next -sass ، يبدو أن أمثلة الاستخدام هذه ستكسر 🤔

هل يمكنك إضافة مستودع نسخ إلى https://github.com/zeit/next-plugins/issues/282

ما تصفه يبدو تمامًا مثل هذه المشكلة.

يمكنني الحصول على هذا لإعادة الإنتاج بشكل موثوق عبر أوضاع التطوير والإنتاج والتصدير الثابت ولم يساعد أي من الحلول البديلة لملف css onDemandEntries أو الفارغة.

كانت الطريقة الوحيدة لإصلاح المشكلة هي إزالة import 'highlight.js/styles/color-brewer.css'; من مكوِّن النص الأساسي في صفحات منشورات المدونة الخاصة بي.

أي مثيل <Link> يشير إلى صفحة منشور مدونة سيفشل في التحميل ولكن لا يزال يتم إسقاط http://localhost:3000/_next/static/development/pages/post.js على الصفحة عند النقر على <Link> . التعليق على أن استيراد css ، <Link> s إلى منشورات المدونة يعمل بشكل مثالي. Uncomment وجميع <Link> s يفشلون في تحميل مشاركات المدونة.

يؤدي الوصول إلى أي من مسارات صفحات منشور المدونة هذه إلى العمل بشكل جيد ، ولا يتعلق الخطأ إلا بالتوجيه المستند إلى جانب العميل. حدث هذا بعد الترقية من الإصدار 6 إلى الإصدار 8.

لقد قمت في البداية بضرب هذا بـ @zeit/next-css ولكن يمكنني تكرار هذه المشكلة بنفس الطريقة بعد التبديل في @zeit/next-sass واستيراد ملف .scss. في الوقت الحالي ، أقوم فقط بتحميل هذه الأنماط باستخدام styled-components drop @zeit/next-css . بعد مراجعة https://www.npmjs.com/package/@zeit/next -css و https://www.npmjs.com/package/@zeit/next -sass ، يبدو أن أمثلة الاستخدام هذه ستتعطل 🤔

بعد إضافة الحزمة التالية / css يمكنني تأكيد حدوث ذلك لي أيضًا.

حدث الشيء نفسه لي في التطوير (أعمال الإنتاج كما هو متوقع) ، والمشكلة هي عندما نربط صفحات (أو تحتوي على مكونات بداخلها) تستورد ملفات sass.

ملفي next.config.js :

const withSass = require('@zeit/next-sass');

const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});

require('dotenv').config();

module.exports = withBundleAnalyzer(
  withSass({
    distDir: '../dist',
    env: {...},
  }),
);

إذن ، أحد المكونات المتعمقة له هذا الاستيراد:

// MIGRATE: PriceDetail to styled components
import './PriceDetail.scss';

عندما أعلق على الاستيراد ، يبدأ الارتباط في العمل. لذلك يبدو أنها مشكلة في المكون الإضافي withSass .

لدي مشكلة مماثلة ولكن ليس نفس الشيء. للأسف أحصل على نفس الخطأ
في الإنتاج أيضًا. لكن لبعض الأسباب تعمل الروابط في بعض الأحيان.

لقد واجهت نفس المشكلة مع التالي 9.4
أضفت CodeMirror أمس إلى مشروعي وأيضًا
import "codemirror/lib/codemirror.css"

لدي شيء مثل Pages / page2.js يقوم ببعض الأشياء ثم يستدعي router.replace("/") في نهاية ذلك ، وفجأة توقف عن فعل أي شيء.
أظهر تشغيل router.replace("/") في مصحح الأخطاء وعدًا لا يحل أبدًا أو يصل إلى كتل catch أو finally .

من الجدير بالذكر أيضًا أن لدي ملف css التالي في next.config.js - سأحاول إزالته ومعرفة ما إذا كان لذلك أي تأثير.

يبدو أنه ربما هناك حل سريع هنا؟ =)

حسنًا ، لقد أصلحت هذه الأشياء بالنسبة لي - من الواضح أنني اضطررت أيضًا إلى نقل الاستيراد إلى ملف shell _app.js أيضًا.

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