Test Watched Words ist kaputt

Beim Verwenden der Funktion „Test“ auf dem Konfigurationsbildschirm für beobachtete Wörter wird wiederholt der Fehler „roste Klammer ist im regulären Ausdruck mit Unicode-Flag nicht zulässig“ in der Konsole ausgegeben.

  1. Gehen Sie zu https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. Öffnen Sie die Browserkonsole
  3. Drücken Sie „Test“
  4. Geben Sie etwas ein
  5. Beobachten Sie Fehler

Der Fehler stammt aus watched-words.js und liegt daran, dass der übergebene reguläre Ausdruck (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$) lautet, der für Ruby gültig ist, aber nicht für JavaScript. Der reguläre Ausdruck stammt aus einer API, https://meta.discourse.org/admin/customize/watched_words.json. Diese ruft ihre JSON aus dem Watched Words Serializer, der dann Word Watcher mit nur übergebenem action aufruft.

Vor ein paar Wochen wäre das in Ordnung gewesen, aber ein PR hat eine Änderung eingeführt, die zwei weitere zusätzliche Parameter hinzugefügt hat. Einer dieser Parameter war engine, engine ist ein Parameter, der standardmäßig auf Ruby gesetzt ist und nicht durch den oben genannten Aufruf angegeben wird. Daher ist der zurückgegebene reguläre Ausdruck Ruby-spezifisch, wird aber von der JavaScript-RegEx-Engine verbraucht.

5 „Gefällt mir“

Ich kann dies auf meiner Testseite reproduzieren.

  • Ein blockiertes “Watched Word” einrichten
  • Die Testfunktion verwenden, um es auszuprobieren
  • Diesen Fehler in der Konsole erhalten:
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

Danke für den detaillierten Bericht, ich werde sehen, ob wir jemanden darauf ansetzen können. :slight_smile: :+1:

5 „Gefällt mir“

Danke für den detaillierten Bericht @Arthri

Dies wurde behoben.

3 „Gefällt mir“