Angular 9 представил глобальную функцию $ localize (), которую необходимо загрузить

Я получаю следующую ошибку при настройке моего нового проекта angular.

Установленные пакеты и их версии

ОШИБКА Ошибка: не перехвачено (в обещании): Ошибка: похоже, ваше приложение или одна из его зависимостей использует i18n. В Angular 9 появилась глобальная функция $localize(), которую необходимо загрузить. Добавьте import '@angular/localize'; в ваш файл polyfills.ts. Ошибка: похоже, ваше приложение или одна из его зависимостей использует i18n. В Angular 9 появилась глобальная функция $localize(), которую необходимо загрузить.

Примечание: я пришел из следующего. Предлагает вернуться к старой версии. https://github.com/angular/angular/issues/32508


person Balaganesan Ravichandran    schedule 16.09.2019    source источник
comment
В чем конкретно ваш вопрос? Сообщение об ошибке дает четкие инструкции о том, что делать.   -  person JJJ    schedule 16.09.2019


Ответы (11)


Сначала убедитесь, что у вас есть пакет @ angular / localize:

npm install @angular/localize --save

Затем import '@angular/localize/init' в файле polyfills.ts, как указано в сообщении об ошибке

person rhino5oh    schedule 17.09.2019

Лучший способ, если вы используете Angular CLI, - запустить

ng add @angular/localize

Он позаботится об этом автоматически

Или иначе

import '@angular/localize/init'; в ваш polyfills.ts

Протестировано с Angular 9

person dota2pro    schedule 10.02.2020
comment
он автоматически добавляет его в package.json с помощью 'ng add ...'? - person Gereon99; 03.08.2020
comment
да, будет добавлено. - person ammad khan; 15.04.2021

Если у вас много проектов angular в одной рабочей области, запуск ng add @angular/localize добавит оператор импорта import '@angular/localize/init' в polyfills.ts только в Project по умолчанию, я думаю, это будет исправлено в более поздних обновлениях.

поэтому вам нужно добавить import '@angular/localize/init' вручную в polyfills.ts в других проектах.

person Ahmed Abdelfattah    schedule 13.02.2020
comment
Недооцененный ответ. Об этом никогда не упоминается в официальных руководствах. - person Lazar Ljubenović; 19.05.2020
comment
Я подозреваю, что этот ответ мог спасти мне день и мое рассудок. - person CodeMonkey; 03.06.2020
comment
В моем случае ng add не добавлял его в polyfills.ts. Спасибо за это. - person Zuhair; 01.02.2021
comment
Этот ответ сэкономил мне дни. В моем проекте по умолчанию уже был импорт, поэтому отчет CLI вводил в заблуждение: Пропуск установки: пакет уже установлен. Ничего не поделаешь. - person Stewii; 08.05.2021

Если вы используете ng test и приведенный выше ответ не работает, установите пакет и добавьте

import "@angular/localize/init"

to polyfills-test.ts

person Vaishak    schedule 23.03.2020
comment
Хороший момент здесь, также установка с определенным файлом ts для тестов. Также необходимо обновить - person Camille; 13.04.2021

В Angular 9 появилась глобальная функция $ localize (), которую необходимо загрузить, если вы используете i18n.

Запустите ng add @angular/localize из Angular CLI.

Затем убедитесь, что у вас есть:
- @angular/localize в качестве зависимости в package.json вашего приложения
- import '@angular/localize/init' в вашем polyfills.ts

person xidedix    schedule 24.10.2019

Поскольку атрибуты i18n теперь преобразуются в вызовы $ localize в сгенерированном коде, нам нужно загрузить функцию $ localize.

CLI предлагает схему, чтобы сделать это за вас. Просто запустите: ng add @ angular / localize

Он добавит пакет в ваши зависимости и необходимый импорт в ваши полифиллы (import '@ angular / localize / init')

Вы также можете обратиться к следующей ссылке для получения дополнительных объяснений. https://blog.ninja-squad.com/2019/12/10/angular-localize/

person Anshita Singh    schedule 14.01.2020
comment
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - person THess; 14.01.2020
comment
@THess спасибо за предложение, я обновил ответ и поделился ссылкой для справки. - person Anshita Singh; 14.01.2020

Лучший способ сделать это - использовать Angular CLI:

Вам просто нужно запустить следующую команду в терминале:

ng add @angular/localize

Он автоматически установит пакеты, а также добавит оператор импорта в файл polyfills.ts.

Оператор импорта:

import '@angular/localize/init';

Если вы не хотите использовать подход CLI, вы можете вручную ввести оператор импорта в файл polyfills.ts. Также вам нужно сделать еще один шаг - добавить следующую строку в package.json в теге dependencies.

"dependencies":{
    ...
    "@angular/localize":"^9.1.0",
    ...    
}
person Shaikh Nazish    schedule 01.04.2020

Эта ошибка начала появляться после того, как я обновил большое приложение Nx / Angular CLI с несколькими вспомогательными приложениями до Angular 10. Решение, предложенное в ошибке (запустите ng add @angular/localize из Angular CLI), не работает, если приложение содержит несколько приложений. У каждого из этих автоматически сгенерированных приложений было свое polyfill.ts. Я вручную добавил импорт (import '@angular/localize/init';) в каждый файл polyfill.ts. Чтобы исправить ту же ошибку при запуске модульных тестов, мне также пришлось добавить импорт в файл libs test.ts.

person Atif Majeed    schedule 23.09.2020
comment
Я бы хотел, чтобы этот ответ был выше, это была именно та проблема, с которой я столкнулся с внутренними библиотеками, и мне пришлось добавить импорт в test.ts, иначе он не сдвинется с места. - person Zentaurus; 05.06.2021

Вы должны добавить этот пакет

ng add @angular/localize

затем добавьте import '@angular/localize/init'; в свой ployfills.ts

Но если ваши тесты не работают в библиотеке, вы должны добавить import '@angular/localize/init'; в свой test.ts

person Hicham    schedule 21.12.2020

запустить

npm install @angular/localize --save

Затем в вашем polyfills.ts

import '@angular/localize/init' 

это работает для меня

person jayanga    schedule 16.03.2021

Я сменил операционную систему из-за этой проблемы. И вчера я нашел причину этой проблемы. У меня возникла эта проблема из-за плагина, который я установил в Visual Studio Code. Если вы используете Angular9, не устанавливайте первые два плагина. Вы можете установить третий.

введите описание изображения здесь

person Anonim    schedule 20.07.2021