2 votes

React Native : <string>.matchAll n'est pas une fonction

Je reçois une erreur bizarre lorsque je lance mon application React Native :

Quelques exemples de code :

const { url } = <incoming object>;
const reURL   = <my regex>;

console.debug('url:', url);
console.debug('typeof url:', typeof url);

matches = [...url.matchAll(reURL)];

Sortie du journal :

url: <as expected>
typeof url: string

Message d'erreur :

TypeError: url.matchAll is not a function. (In 'url.matchAll(reURL)', 'url.matchAll' is undefined)

Tout fonctionne bien sur iOS, l'erreur ne se produit que sur Android.

Environnement plutôt moderne, mise à jour de tous les npm il y a quelques jours.

Quelqu'un a-t-il la moindre idée de l'endroit où commencer à chercher une solution ?

0voto

J'ai le même problème. String.matchAll ne fonctionne pas pour Android. Vous devez utiliser match au lieu de matchAll .

Exemple :

const regex = new RegExp(text, 'ig');
const arr = string.match(regex);

Vous obtiendrez un tableau de correspondance regex

0voto

foloinfo Points 121

Vous pouvez utiliser string.prototype.matchall à la polyfill.

https://www.npmjs.com/package/string.prototype.matchall

import matchAll from 'string.prototype.matchAll'

matchAll.shim()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X