اختبار الكلمات المراقبة معطل

عند استخدام ميزة “الاختبار” في شاشة تكوين الكلمات المراقبة، تتم طباعة الخطأ “لا يُسمح بالقوس المربع الخام في التعبير العادي مع علامة الوحدة” بشكل متكرر في وحدة التحكم.

  1. انتقل إلى https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. افتح وحدة تحكم المتصفح
  3. اضغط على “اختبار”
  4. أدخل أي شيء
  5. راقب الأخطاء

يأتي الخطأ من watched-words.js، وهو بسبب أن التعبير العادي الذي يتم تمريره هو (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$)، وهو صالح لـ Ruby، ولكنه غير صالح لـ JavaScript. ينشأ التعبير العادي من واجهة برمجة تطبيقات، https://meta.discourse.org/admin/customize/watched_words.json. والتي تحصل على JSON الخاص بها من مسلسل الكلمات المراقبة، والذي يستدعي بعد ذلك word watcher مع تمرير action فقط.

قبل بضعة أسابيع، كان ذلك مقبولاً، ولكن طلب سحب (PR) قدم تغييرًا أضاف معلمتين إضافيتين. إحدى هذه المعلمات كانت engine، و engine هي معلمة افتراضية لـ Ruby، ولم يتم تحديدها بواسطة الاستدعاء المذكور أعلاه. لذلك، فإن التعبير العادي المُرجع خاص بـ Ruby ولكنه يُستهلك بواسطة محرك التعبير العادي لـ JavaScript.

5 إعجابات

يمكنني تكرار هذا على موقع الاختبار الخاص بي.

  • قم بإعداد كلمة مراقبة محظورة
  • استخدم وظيفة الاختبار لتجربتها
  • احصل على هذا الخطأ في وحدة التحكم:
Uncaught SyntaxError: raw bracket is not allowed in regular expression with unicode flag
    createWatchedWordRegExp watched-words.js:12
    matches admin-watched-word-test.js:62
    matches admin-watched-word-test.js:61
    o handle-descriptor.js:61
    get Ember
    untrack validator.js:681
    Ember 3
    o reference.js:175
    tag reference.js:136
    track validator.js:668
    f reference.js:135
    <anonymous> runtime.js:2077
    tag reference.js:136
    track validator.js:668
    f reference.js:135
    evaluate runtime.js:2089
    _execute runtime.js:4306
    execute runtime.js:4291
    rerender runtime.js:4606
    Ember 2
    It runtime.js:4139
    Ember 3
    invoke queue.ts:201
    flush queue.ts:98
    flush deferred-action-queues.ts:75
    _end index.ts:616
    end index.ts:298
    _runExpiredTimers index.ts:739
    setTimeout handler*setTimeout platform.ts:50
    _installTimerTimeout index.ts:783
    _scheduleExpiredTimers index.ts:764
    _runExpiredTimers index.ts:738
watched-words.js:12

شكرًا لك على التقرير المفصل وسأرى ما إذا كان بإمكاننا جعل شخصًا ما يلقي نظرة. :slight_smile: :+1:

5 إعجابات

شكراً على التقرير المفصل @Arthri

لقد تم إصلاح هذا.

3 إعجابات