لقد كنت أعالج مشكلة تواجهها قوائم BS4 المنسدلة ولا تعمل، واكتشفت أنه عند النقر، يتم استدعاء ملف _ember_jquery.js في المسار /assets/var/www/discourse/public/assets بدلاً من /assets (وهو الموقع الفعلي للملف). لست متأكداً من سبب إضافة مسار الخادم الكامل. إلى حد علمي، لم يتم إجراء أي تغييرات ذات صلة في الإعدادات، والشيء الوحيد الذي عملت عليه هو إضافة مكون إضافي مخصص بسيط (نعم، تستمر المشكلة حتى بعد إزالة المكون الإضافي). أنا جديد نسبياً في Discourse، لذا فإن أي أفكار حول هذه المسألة ستكون موضع تقدير كبير. يرجى إعلامي إذا كنت بحاجة إلى معلومات إضافية.
أعتقد أن هذه مشكلة تتعلق بطريقة إنشاء خريطة المصدر، وسببها هذا الطلب: DEV: Bump uglifyjs by romanrizzi · Pull Request #7834 · discourse/discourse · GitHub.
في السابق، كانت تُستخدم الخيارات النسبية -p، لذا كانت مسارات خريطة المصدر تبدو مثل [‘admin…js.map’]. بدءًا من الإصدار 2.4.beta9، لم يعد الخيار -p متاحًا بسبب الانتقال إلى uglify 3، لذا أصبحت مسارات خريطة المصدر مطلقة مثل [‘/var/www/discourse/public/assets/admin…js.map’]. وهذا تسبّب في ظهور أخطاء 404 لخريطة المصدر أثناء التصحيح، لأن الملف الفعلي كان موجودًا في /assets، لكن الخريطة أشارت إلى أنه موجود في /var/www/…/assets.
الحل البديل الذي وجدته هو تعديل lib/tasks/asset.rake لإضافة خيار base إلى معلمة خريطة المصدر، لتصبح بالشكل التالي:
base = assets_path + ((d = File.dirname(from)) == "." ? "" : "/#{d}")
cmd = <<~EOS
uglifyjs '#{assets_path}/#{from}' -m -c -o '#{to_path}' --source-map "base='#{base}',root='#{source_map_root}',url='#{source_map_url}'" --output '#{to_path}'
EOS
لا يمكنني ضمان نجاح هذا الحل للجميع، لكنه يسمح لي بالتصحيح عبر خرائط المصدر دون ظهور أخطاء 404.
هل كان علينا إصلاح هذا يا @sam؟
نعم، نحن نتتبع هذا في مكان آخر، وسأضيف ملاحظة في قائمة المهام ليصبح @Roman على علم بذلك.
نعتذر عن التأخير، تم الآن حل المشكلة وتم إرجاعها إلى إصداري بيتا والإصدار المستقر. أضفنا السمة base التي تحتوي على المسار إلى الأصل، مع ترك السمة source تحتوي فقط على اسم الملف.