انكسر Discourse بعد نقل السيرفرات

لقد تم استضافة مثيل Discourse الخاص بنا على Digital Ocean لسنوات عديدة، لدرجة أن المشكلات بدأت في الظهور بسبب بقائنا على Ubuntu 18. لذلك، قمت بإنشاء Droplet جديد مع تثبيت Discourse جديد، وقمت بتشغيله، ثم قمت بتنزيل استعادة أحدث نسخة احتياطية من Droplet القديم. لم تحدث أخطاء أثناء أي من هذه العمليات.

بمجرد تسجيل الدخول إلى المثيل الجديد، يبدو الأمر كالتالي:

وتعطيني وحدة التحكم هذا:

Uncaught SyntaxError: unexpected token: private identifier
admin-13326e7ca61effcc233d500e3263c63074c9823b7e1d0c1680b6f68e23565d5a.js:76:99
ℹ️ Discourse v3.3.0.beta2-dev — https://github.com/discourse/discourse/commits/2a2eaf835f — Ember v5.5.0 app.js:213
Uncaught (in promise) Error: There is no route named admin
    handlersFor https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForRoute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    isActiveForState https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get isActive https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    get class https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Re https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    a https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Ke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    tag https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    track https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    d https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Je https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    <anonymous> https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluate https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateSyscall https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateInner https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    evaluateOuter https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    next https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    execute https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    sync https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    render https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    Nt https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoots https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRootsTransaction https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _renderRoot https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _appendDefinition https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    appendOutletView https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    invoke https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    flush https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _end https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
    _boundAutorunEnd https://discourse.gomomentum.org/assets/vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9
vendor.ff29780b9fed784cce2d843dcb93a803-608f4f77d8437d715d8d39c739c0c8bbe0fe51c9305e55f1ec7d0bee19f5571f.js:9:384138

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

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

هل يمكنك محاولة زيارة موقعك في الوضع الآمن لمعرفة ما إذا كان يتم تحميله؟

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

لقد فعلت ذلك. يبدو متطابقًا ، وأحصل على نفس الأخطاء.

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

  • حساب المسؤول → معطل
  • حساب المشرف (مع وصول محدود إلى لوحة تحكم المسؤول) → معطل
  • حساب عادي → يعمل بشكل جيد

يبدو أن المشكلة تحدث فقط إذا كانت قائمة الشريط الجانبي تتضمن رابط “المسؤول”، حيث أن هذا هو ما كان سيظهر مباشرة أسفل عنصر “المراجعة” في لقطة الشاشة أعلاه. ربما يساعد هذا؟

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

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

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

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

(P.prototype.handlersFor = function (e) {
    var t = this.names[e];
    if (!t) throw new Error("There is no route named " + e);
    for (var r = new Array(t.handlers.length), n = 0; n < t.handlers.length; n++) {
        var i = t.handlers[n];
        r[n] = i;
    }
    return r;
}),

هل سيساعد هذا، أم أحتاج إلى إيجاد طريقة لنشر الملف بأكمله؟

هل تستخدم Cloudflare مع السحابة البرتقالية؟ إذا كان الأمر كذلك، فقم بتعطيلها.

إعجابَين (2)

لدي مشكلة مماثلة يبدو أنها بدأت اليوم أو أمس. مسارات المسؤول الخاصة بي لا تعمل، وقائمة معطلة.

Uncaught (in promise) Error: There is no route named admin

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

إذا قمت بمسح ذاكرة التخزين المؤقت لـ Cloudflare أو قمت بتشغيل وضع التطوير، فسيختفي ذلك، ولكن بمجرد بدء التخزين المؤقت، تعود المشكلة.

تعديل: لست متأكدًا مما إذا كان هذا مرتبطًا، ولكن هذه بعض الأخطاء في وحدة التحكم عند تسجيل الدخول كمسؤول.

هذا هو السطر البرمجي:

class d extends t.default{static#e=dt7948.g(this.prototype,\"currentUser\",[a.service])#t=void dt7948.i(this,\"currentUser\")

قائمتي تنقطع هنا:

يحدث خطأ “لا يوجد مسار يسمى admin” عند فتح تلك القائمة. قد يكون ذلك ينقطع حيث سيكون رابط “admin”.

يجب عليك تعطيل جميع القواعد في Cloudflare، بما في ذلك Rocket Launcher وأي شيء يتعلق بـ WAF.

إذا حافظت على إعدادات Cloudflare الخاصة بك نظيفة، فلن تسبب أي مشاكل مع Discourse.

Rocket Loader معطل في هذا الموقع. لا أعتقد أنه تم إجراء أي تغييرات على إعدادات Cloudflare مؤخرًا. (لقد تحققت للتو من سجلات التدقيق.)

@Ryan_Hyer أنظر إلى لقطة الشاشة الخاصة بك مرة أخرى. هل يتم قطعها بالضبط حيث سيظهر عنصر قائمة المسؤول؟ هذا هو نفس المكان الذي يحدث فيه على موقعي.

إذا كانت لديك أشياء مثل جدار حماية تطبيقات الويب (WAF) قيد التشغيل، فيمكن لـ Cloudflare أيضًا إجراء تغييرات على سلوكها الداخلي الذي قد يؤثر على موقعك.

يرجى التأكد أيضًا من تعطيل ميزة “تصغير تلقائي” الخاصة بـ Cloudflare، وأنك قد قمت بمسح ذاكرة التخزين المؤقت.

لقد ألغوا هذه الميزة لأنها لا تعمل مع ميزات JavaScript الحديثة (التي يستخدمها Discourse الآن)

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

لقد قمنا بالتراجع عن التغيير بسبب المشكلات المتعلقة بـ Cloudflare و Safari 15.

لذا @Ryan_Hyer إذا قمت بترقية Discourse مرة أخرى، فيجب أن تعود الأمور إلى طبيعتها.

(ولكن لا يزال، أوصي بشدة بتعطيل جميع ميزات تحسين JavaScript الخاصة بـ Cloudflare مثل Rocket Loader والتحسين التلقائي)

3 إعجابات

شكرًا لك! يقول Git pull إنني محدث بالفعل، لذا يجب ألا يكون التغيير متاحًا بعد؟

أعتقد أن الشيء الوحيد الذي نستخدم Cloudflare من أجله هو DNS والحماية من هجمات DDoS، لا شيء آخر. ولكن نعم، كان لدينا السحابة البرتقالية مفعلة. لقد قمت بإيقاف تشغيلها للتو، ويبدو أن موقعي يعمل بشكل جيد، رائع! شكراً يا رفاق!

إعجابَين (2)

هذه السحابة البرتقالية دون أي تعديلات من الإعدادات الافتراضية تعني أساسًا “تعطيل موقعي”.

لدينا دليل حول ما يجب تكوينه إذا كنت تستخدمه.

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

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

3 إعجابات

تم إغلاق هذا الموضوع تلقائيًا بعد 30 يومًا من آخر رد. لم يعد يُسمح بالردود الجديدة.