Les mots surveillés de test sont cassés

Lorsque vous utilisez la fonctionnalité « Tester » dans l’écran de configuration des mots surveillés, l’erreur « raw bracket is not allowed in regular expression with unicode flag » est imprimée à plusieurs reprises dans la console.

  1. Accédez à https://meta.discourse.org/admin/customize/watched_words/action/require_approval
  2. Ouvrez la console du navigateur
  3. Appuyez sur « Tester »
  4. Entrez n’importe quoi
  5. Observez les erreurs

L’erreur provient de watched-words.js, et c’est parce que l’expression régulière passée est (?:[^[:word:]]|^)(word1|word2)(?=[^[:word:]]|$), qui est valide pour Ruby, mais pas pour JavaScript. L’expression régulière provient d’une API, https://meta.discourse.org/admin/customize/watched_words.json. Qui obtient son JSON du sérilaliseur de mots surveillés, qui appelle ensuite word watcher avec uniquement action passé.

Il y a quelques semaines, cela aurait été correct, mais une PR a introduit un changement qui a ajouté deux paramètres supplémentaires. L’un de ces paramètres était engine, engine est un paramètre qui est par défaut sur Ruby, et il n’est pas spécifié par l’appel susmentionné. Ainsi, l’expression régulière retournée est spécifique à Ruby mais elle est consommée par le moteur d’expressions régulières JavaScript.

5 « J'aime »

Je peux reproduire cela sur mon site de test.

  • Configurer un Mot surveillé bloqué
  • Utiliser la fonction de test pour l’essayer
  • Obtenir cette erreur dans la 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

Merci pour ce rapport détaillé, je vais voir si nous pouvons demander à quelqu’un de jeter un œil. :slight_smile: :+1:

5 « J'aime »

Merci pour le rapport détaillé @Arthri

Ceci a été corrigé.

3 « J'aime »