Поддерживается ли нормализованная функция Javascript в реагировать на натив? - PullRequest
0 голосов
/ 09 февраля 2019

В настоящее время я работаю над собственным приложением реагирования и выполняю некоторую очистку имени файла.Я заметил, что некоторые загрузки файлов не выполнялись для символов с акцентами в именах.Я начал удалять специальные символы с помощью функции нормализации, поскольку регулярное выражение само по себе недостаточно, однако эта функция, похоже, не поддерживается на Android.

Пример:

sanitizeFileName(fileName) {
    let encodedFileName = fileName || "upload";
    encodedFileName = encodedFileName.normalize('NFD');
    encodedFileName = encodedFileName.replace(/[^a-zA-Z0-9]/g,'_');
    return encodedFileName;
}

иэто ошибка сгенерированного андроида:

TypeError: undefined is not a function (evaluating 'o.normalize('NFD')'

Вышеприведенная функция работает как положено на iOS по некоторым причинам.Глядя на документацию по normalize , говорится, что она поддерживается в Node.js

Мне интересно, может быть, опция 'NFD' не поддерживается или что-то в этом роде?

Приведенная выше функция работает, однако, если я удаляю часть normalize ...

Она также работает с функцией нормализации в режиме отладки.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я столкнулся с той же проблемой, она работает на Android в режиме отладки, но остановилась, когда не в режиме отладки, что для меня мало смысла.

В итоге я использовал unorm .

yarn add unorm

импортированный модуль

import unorm from 'unorm';

Затем замените encodedFileName.normalize ('NFD') для

unorm.nfd(encodedFileName);

Работает нормально на Androidи iOS.Я надеюсь, что это может помочь другим.

0 голосов
/ 09 февраля 2019

Если вы посмотрите документацию по предоставленной вами ссылке, там написано, что она несовместима с Android WebView.

...