Проблемы с включением Ivy в Angular 10

#angular #ivy

#angular #ivy

Вопрос:

У нас проблема с нашим приложением angular.

Мы недавно обновились до angular 10 и включили Ivy и aot.

Теперь мы сталкиваемся с несколькими проблемами, которые мы не в состоянии решить.

Вот краткий обзор нашей настройки

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

Затем эти библиотеки используются в других приложениях / рабочих пространствах angular, которые сами содержат библиотеки, которые используются в дальнейшем.

Вот простая иллюстрация нашей настройки:

Основной репозиторий:

 CoreApp
--projects
---coreLibA
---coreLibB
--src
---components <-- uses code from coreLibs
  

Пользовательский репозиторий

 UserApp
--projects
---userLibA <-- uses core libs
---userLibB <-- uses core libs
--src
---components <-- uses core libs as well as code from userLibs
  

Основные библиотеки встроены в папку и используются пользовательским приложением из этой папки через NPM.

Это хорошо работает с angular 10 без ivy.

Первая проблема

Итак, сначала мы включили Ivy везде (библиотеки и приложения). Мы смогли coreLibs без проблем собрать и установить их в the userApp . ng serve также userApp работает. Но когда мы попытались создать userLibs , мы столкнулись со следующей ошибкой:

 ERROR: Cannot resolve type entity i4.CommonModule to symbol
An unhandled exception occurred: Cannot resolve type entity i4.CommonModule to symbol
  

Мы смогли устранить некоторые из этих ошибок, удалив импортированные модули в NgModules, которые не были необходимы. Но, к сожалению, мы не смогли решить все проблемы.

Мы все еще не понимаем, почему эта ошибка возникает только с ivy и что это на самом деле означает.

Вторая проблема

Затем мы попытались создать библиотеки без ivy, но все равно запустили приложение с помощью ivy.

Таким образом, мы смогли создать userLibs без проблем. Но когда мы попытались выполнить ng serve следующую ошибку:

 ERROR in the target entry-point "coreLibB" has missing dependecies:
 - @angular/localize/init
 - @angular/cdk/platform
 - rxjs/operators
 - coreLibA
 ... and some more
  

Мы попытались обойти это, добавив жесткие зависимости в библиотеки package.json и занеся их в белый список в ng-package.json. Это сработало, но при установке npm не хватило памяти. Так что это тоже не решение.

Заключение

Кажется, что Ivy намного строже, чем механизм просмотра. Но нам нужно, чтобы Ivy использовал новую функцию локализации angular 10.

Поэтому мы были бы очень признательны за помощь в решении этой проблемы. Мы знаем, что мы, вероятно, не предоставили достаточно информации, но мы просто не знаем, какая информация необходима. Так что просто дайте нам знать, и мы доставим.

Спасибо за вашу помощь

Комментарии:

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

Ответ №1:

Вот решение: проблема с Anuglar GitHub

В основном это связано с тем, откуда потребляются пакеты. Если пакеты лежат за пределами проекта, необходимо указать «preserveSymlinks»: true.