تغيير 'use strict' القادم لمكونات الثيم - تعطل الثيمات بعد ترقية Discourse

أنا الآن على أحدث مستوى من الالتزام (105634435f). أقوم بترقية Discourse تقريبًا كل أسبوع. عادةً لا توجد مشاكل على الإطلاق. لكن الآن فشلت عدة مكونات للمظهر في التحميل. وبعبارة “فشل التحميل” أعني أن المكونات لم تعد تظهر. لا يُظهر سجل الميزات في لوحة الإدارة أي شيء غريب يمكنني ربطه بهذه المشكلة. تبدو العديد من هذه الأخطاء عرضية، وقد ظهرت بالفعل على مدى فترة زمنية أطول. مثل أخطاء MimeType النادرة ووقت انتظار DNS لـ Google، مرة أخرى، تحدث نادرًا.

هذه الإضافات فشلت في التحميل بعد الترقية:

  • DiscoTOC
  • discourse gifs
  • Discourse Jitsi
  • Hamburger Theme Selector
  • Nav Links Component
  • Tag Icons

الوحيدة التي تعمل هي:

  • Discourse Kanban
  • Easy Footer

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

4 إعجابات

بالإضافة إلى ذلك، فإن تعريفات متغيرات جافا سكريبت غير الصارمة مثل:

xxx = 330;

بدلاً من

var xxx = 330;

ستؤدي إلى أخطاء “متغير غير معرف” في جافا سكريبت. وقد اضطُررنا إلى تغيير جميع هذه الحالات في سكريبتاتنا.

نعم، هناك مشكلة في بعض مكونات السمة، ونحن نعمل على إصلاحها.

9 إعجابات

@pmusaraj شكرًا جزيلاً لك.
حظًا موفقًا

هل تعرف سبب ظهور أخطاء للمتغيرات غير المحددة بدقة في مكونات JavaScript؟ هل هذه خطأ في المعالجة اللاحقة؟ هل حدث أي تغيير هنا؟

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

9 إعجابات

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

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

أعتذر عن الإزعاج الذي سببناه اليوم.

6 إعجابات

أحد سماتنا (سمة بانر) تم استبدالها بالكامل بصيغتها الأولية، وقد ضاع كل التغييرات التي قمنا بها. لم يكن هناك تحديث للسمة منذ عام 2018. هل سنتمكن من استعادة التغييرات؟

ها هو أمر غريب حقًا. هل قمت بتحديث مثيلك مرة أخرى ليشمل https://github.com/discourse/discourse/commit/2b9ab3a0d91d1350188dd554764dbb4ce9837edd؟ هل يمكنك التوضيح أكثر قليلًا ما الذي تقصده بـ ‘التنسيق الأولي’؟ هل تقصد أنك كان لديك تعديلات محلية على ملفات JS/CSS للموضوع، ولكن الآن اختفت جميع هذه التعديلات؟

إعجابَين (2)

هل يشرح هذا أيضًا مشكلة تعريفات المتغيرات في JavaScript؟ إذا كان الأمر كذلك، فكيف؟

لا أعتقد أن هذه المشكلة تتعلق بهذه الميزة التي تم التراجع عنها، فقد واجهت نفس الحالة مع مكون قبل بضعة أسابيع، ربما في وقت ميزة مؤشر التفرع (والتي تتعلق بالإضافات لذا :roll_eyes: ربما غير ذات صلة أيضًا، لكنني اضطرت فقط لتفرع المكون لتعديل الأمور).

إعجاب واحد (1)

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

كان هذا التغيير معقدًا وأثر أيضًا على كود JavaScript المضمن “inline” في السمات. تم التراجع عنه وسيتم إعادة صياغته خلال الأيام القليلة القادمة قبل إعادة دمجه. يمكنك قراءة التفاصيل على FEATURE: Introduce theme/component QUnit tests by OsamaSayegh · Pull Request #12517 · discourse/discourse · GitHub

3 إعجابات

نعم، هذا التغيير هو سبب المشكلة التي واجهتها في نسختك. أحتاج إلى الدخول في بعض تفاصيل نظام النسخ لشرح ما حدث. هناك طريقتان لإضافة JavaScript إلى نسخة/مكون في Discourse: الأولى تستخدم وسوم <script type="text/discourse-plugin"> داخل ملفات head_tag.html، والأخرى تستخدم ملفات JavaScript مستقلة توجد داخل مجلد يسمى javascripts في نسختك/مكونك.

قبل تغيير اليوم، كان يتم معالجة JavaScript داخل وسوم السكربت الخاصة تلك بطريقة تعتمد على المتغير العام Discourse، وهو غير متاح عند التطوير على Discourse باستخدام Ember CLI. في التغيير الذي دفعته اليوم، جعلت Discourse تعامل JavaScript داخل هذه الوسوم كما لو كانت قادمة من ملفات مستقلة، مما سمح لنا بتجنب استخدام المتغير العام Discourse.

الآن، أحد “الآثار الجانبية” لمعاملة وسوم JavaScript كملفات هو أن JavaScript داخل هذه الوسوم سيكون له توجيه "use strict"، وهو ما لم يكن موجودًا من قبل، وهذا التوجيه يسبب الأخطاء التي رأيتها:

أنصحك بالاحتفاظ بجميع التغييرات التي أجريتها اليوم في نسختك، لأن وسوم JavaScript ستُعامل مرة أخرى كملفات مستقلة عندما أضيف تغييراتي مرة أخرى.

6 إعجابات

نعم، كانت مجرد تعريفات كسولة في كودنا، ويعمل كل شيء بشكل صحيح بعد جعل التعريفات صارمة.

على أي حال، شكرًا لك على شرح ذلك بتفصيل أكثر. ربما يكون مفيدًا للآخرين أيضًا.

إعجاب واحد (1)

نعم، لقد اختفت جميع التغييرات، بدءًا من تعديلات CSS و JS وحتى تغييرات النص :sweat:؛ أي أن مظهري عاد إلى تنسيقه الأولي مع نصوص مثل “Lorem ipsum dolor sit amet …”. على أي حال، سأستخدم النسخة الاحتياطية، لكن كان الأمر غريبًا أن يحدث هذا بعد الترقية.

إعجاب واحد (1)

مرحبًا @Pad_Pors،

أعتقد أن مشكلتك تتعلق بهذا أكثر. :slightly_smiling_face:

أما بالنسبة للموضوع الآخر الذي كتبت عنه:

لذلك أعتقد أنك لم تُحدّث نظام Discourse الخاص بك منذ فترة.

4 إعجابات

تابع هنا: