Ошибка AngularJS ngSanitize на 1.7.0

Я получил в значительной степени эту ошибку: AngularJS ngSanitize Error

короткая версия: "строчная не является функцией".

В то время как в моем приложении AngularJS применен к версии 1.4.9, мы не применяли angular-sanitize, поэтому оно разрешается до 1.7.0, и в этой версии функции строчных букв AngularJS больше не существует, что приводит к ошибке.

Возможно, принудительное использование angular-sanitize для фиксированной версии исправит это, но я хочу выйти за рамки исправления и понять, что является причиной проблемы и почему, потому что я обнаружил несколько несоответствий.

  • AngularJS вынужден к 1.4.9. Папка bower-components содержит эту версию, папка сборки после компиляции также содержит эту версию, панель разработчика в Chrome показывает только эту версию. Эта версия имеет строчный метод.

  • Angular-sanitize имеет угловой 1.7.0 в качестве зависимости, но он никогда не загружается, никогда. Ни в одной папке или подпапке во всем проекте, ни при компиляции, ни из Chrome. Поэтому я думаю, что единственный angular.js, к которому у него есть доступ, это 1.4.9, который имеет метод строчных букв.

Я не совсем понимаю, почему тогда появляется ошибка "нижний регистр не является функцией", если единственный доступный angular.js все еще имеет этот метод. Также я не понимаю, почему angular-sanitize 1.7.0, требующий angular 1.7.0, использует несуществующие методы на AngularJS 1.7.0 (ошибка разработчиков Angular? Но мне трудно в это поверить).

Вероятно, sanitize - это загрузка и доступ к angular 1.7.0, но я хотел бы знать, как это сделать. Просто из любопытства. А также, чтобы подтвердить, является ли это ошибкой разработчика или я что-то упустил.

1 ответ

Это объясняется в официальном руководстве по миграции с Angular 1.6 на 1.7:

Благодаря 1daa4f, вспомогательные функции angular.lowercase а также angular.uppercase был удален.

Эти функции устарели с 1.5.0. Они используются внутри, но не должны быть доступны, так как они содержат специальную обработку языкового стандарта (для турецкого языка) для поддержания внутренней согласованности независимо от заданного пользователем языкового стандарта.

Разработчики должны обычно использовать встроенные модули toLowerCase а также toUpperCase или же toLocaleLowerCase а также toLocaleUpperCase для особых случаев.

Кроме того, мы обычно не рекомендуем использовать помощники angular.x в коде приложения.

Другие вопросы по тегам