Test Parole Monitorate non funziona

Quando si utilizza la funzionalità “Test” nella schermata di configurazione delle parole monitorate, l’errore “raw bracket is not allowed in regular expression with unicode flag” viene stampato ripetutamente sulla console.

  1. Vai su https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. Apri la console del browser
  3. Premi “Test”
  4. Inserisci qualsiasi cosa
  5. Osserva gli errori

L’errore proviene da watched-words.js, ed è perché l’espressione regolare passata è (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$), che è valida per Ruby, ma non per JavaScript. L’espressione regolare ha origine da un’API, https://meta.discourse.org/admin/customize/watched_words.json. Che ottiene il suo JSON dal serializer delle parole monitorate, che poi chiama word watcher con solo action passato.

Qualche settimana fa sarebbe andato tutto bene, ma una PR ha introdotto una modifica che ha aggiunto altri due parametri. Uno di questi parametri era engine, engine è un parametro che per impostazione predefinita è Ruby, e non è specificato dalla chiamata sopra menzionata. Quindi l’espressione regolare restituita è specifica per Ruby ma viene consumata dal motore di espressioni regolari JavaScript.

5 Mi Piace

Posso replicare questo sul mio sito di test.

  • Imposta una Parola Monitorata bloccata
  • Usa la funzione di test per provarla
  • Ottieni questo errore nella console:
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

Grazie per il resoconto dettagliato e vedrò se riusciamo a farci dare un’occhiata da qualcuno. :slight_smile: :+1:

5 Mi Piace

Grazie per il report dettagliato @Arthri

Questo è stato risolto.

3 Mi Piace