Angular-google-maps: Не совместим с Ivy (экспериментальный)

Созданный на 1 июн. 2019  ·  54Комментарии  ·  Источник: SebastianM/angular-google-maps

Описание проблемы
При компиляции с Ivy происходит сбой компиляции со следующей ошибкой:

ERROR in src/app/app.module.ts(8,12): error TS-991010: Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object]

Шаги по воспроизведению и минимальная демонстрация проблемы
Я не смог создать для этого stackblitz или plunker, поскольку он намеревается показать сбой компилятора, и я не знаю, как это продемонстрировать.
Вы можете проверить https://github.com/paullessing/agm-ivy-demo и попытаться построить после запуска yarn install .

  1. Установите новый проект Angular 8, используя ng new
  2. Добавьте @agm/core и настройте импорт по умолчанию
    imports: [ BrowserModule, AgmCoreModule.forRoot({ apiKey: environment.mapsApiKey, }) ]
  3. Включить плющ в tsconfig.app.json :
    { ... "angularCompilerOptions": { "enableIvy": true } }
  4. Включите AOT в angular.json чтобы обойти « ленивые маршруты не найдены »:
    { "projects": { "my-project": { "architect": { "build": { "options": { ... "aot": true, } } } } } }
  5. Выполнить ng serve

Текущее поведение
Сбой компиляции с ошибкой:

ERROR in src/app/app.module.ts(8,12): error TS-991010: Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object]

(Позиция 1 в массиве imports - это AgmCoreModule.forRoot() )

Ожидаемое / желаемое поведение
Нет сбоев компилятора

angular2 и версия angular-google-maps

"@agm/core": "1.0.0-beta.5",
Angular CLI: 8.0.1
Node: 10.16.0
OS: win32 x64
Angular: 8.0.0
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.800.1
@angular-devkit/build-angular     0.800.1
@angular-devkit/build-optimizer   0.800.1
@angular-devkit/build-webpack     0.800.1
@angular-devkit/core              8.0.1
@angular-devkit/schematics        8.0.1
@angular/cli                      8.0.1
@ngtools/webpack                  8.0.1
@schematics/angular               8.0.1
@schematics/update                0.800.1
rxjs                              6.4.0
typescript                        3.4.5
webpack                           4.30.0

Дополнительная информация
Компиляция работает, когда Ivy отключен.

Может быть связано с https://github.com/angular/angular/issues/28603, в котором говорится, что если package.json не содержит свойства types или typings , то модуль будет исключен из компиляции.

important bug build system

Самый полезный комментарий

Я согласен с тем, что это должно быть выпущено как можно скорее. Несовместимость этой библиотеки с ivy - одна из немногих проблем, которые не позволяют нам протестировать ivy в нашем среднем веб-приложении.

Все 54 Комментарий

Невозможно воспроизвести. Может быть, в importss две буквы?

Невозможно воспроизвести. Может быть, в importss две буквы?

Я думаю, это потому, что это массив с именем imports поэтому сообщение об ошибке пытается сделать его множественным числом.

Я только что попробовал еще раз с новым проектом, но он все еще терпит неудачу (с бета-версией 6). Я обновил данные выше.

Ну попробуй

ng new my-proj --enable-ivy
cd my-proj
npm install @agm/core

добавить AgmCoreModule.forRoot... к импорту

npm start

Это буквально именно то, что я сделал в демонстрационном проекте, который я привел в описании выше.

Здесь та же проблема.

@paullessing @ ramses10 не хотели бы вы присоединиться к Discord, чтобы мы могли обсудить это более интерактивно?

@ doom777 отлично для меня

воспроизводится с помощью build: prod
@ doom777 вы пробовали с флагом prod?

Я имею ту же самую проблему. Мое приложение похоже на пример, которым поделился Пол. Я получаю Value at position 1 in the NgModule.importss of AppModule is not a reference: [object Object] как на ng b --prod и на ng b .

Угловой: 8.0.0
@ agm / core: 1.0.0-beta.6

Привет, у меня такая же проблема, когда Ivy включен:
ОШИБКА в src / app / app.module.ts (37,12): ошибка TS-991010: значение в позиции 16 в NgModule.importss AppModule не является ссылкой: [объект Object]

Работает, когда Айви отключен

Посмотрев на проблему, я обнаружил две связанные проблемы в пакетах angular и angular-cli.

Кажется, что ошибка возникает из-за библиотеки, которая находится за пределами node_module и доступна с помощью path-mapping .

Проверьте следующий комментарий и проблему: https://github.com/angular/angular-cli/issues/14594#issuecomment -497288501

А также этот выпуск: https://github.com/angular/angular/issues/30945

К сожалению, мне не удалось заставить библиотеку работать с техникой, описанной в комментарии (первая ссылка), используя: ./node_modules/.bin/ivy-ngcc -s ./dist .

Я действительно не понимаю, что происходит, но, возможно, это поможет вам.

хм, возможно, после реализации # 1648 это сработает. Мне не известны какие-либо библиотеки с привязкой по пути в нашей библиотеке, но мы используем необычную упаковку

Есть новости по этой проблеме?

такая же проблема здесь при использовании последней бета-версии angular и плюща

после тестирования # 1634 все же исправил, поэтому проблема связана с нашей устаревшей системой сборки. Надеюсь, @SebastianM сможет просмотреть и объединить PR

Есть новости по этому поводу?

Да, я пытаюсь убедить автора # 1634 обновить его PR, чтобы мы могли объединить его. Надеюсь, на следующей неделе. Пока я не могу получить ответа, но если так будет продолжаться, я клонирую его PR и сделаю это сам.

@terencehonles, не могли бы вы обновить https://github.com/SebastianM/angular-google-maps/pull/1634 ?

Не опубликовано в npm?

Еще нет. Мы не публикуем каждую фиксацию.

Не могли бы вы опубликовать этот, так как он может считаться основным, поскольку он предлагает поддержку Angular 9 / IVY.

Еще нет. Мы не публикуем каждую фиксацию.

@ doom777, это может быть хорошей идеей опубликовать, так как это крупное обновление и содержит большое исправление ...

Я согласен с тем, что это должно быть выпущено как можно скорее. Несовместимость этой библиотеки с ivy - одна из немногих проблем, которые не позволяют нам протестировать ivy в нашем среднем веб-приложении.

@ doom777 есть ли обновления относительно того, когда будет опубликована эта или следующая версия? Есть ли трудности с публикацией на npm? Пакет имеет более 65 тысяч загрузок в неделю, вот сколько людей может извлечь выгоду из новой версии.

Читая здесь https://docs.npmjs.com/creating-and-publishing-scoped-public-packages, я понимаю, что публикация должна быть быстрым и легким процессом, или я чего-то упускаю? :)

Спасибо

@ doom777 есть обновления?

Привет всем. Я знаю, что некоторые из вас очень хотят, чтобы это исправление было выпущено, но (1) я не отвечаю за выпуск новых версий agm, (2) мы выпустили одну довольно недавно, и (3) Ivy все еще находится в предварительной версии, так что пока для нас важно выпустить поддержку, это НЕ ПРИОРИТЕТ 0 КРИТИЧЕСКИЙ .
Я написал @SebastianM о выпуске новой версии и жду ответа.

Спасибо за обновление и информацию.

Да, Ivy находится только в предварительной версии, но уже сегодня может помочь многим разработчикам.
Недавний выпуск не должен быть проблемой, поскольку npm позволяет выпускать каждые 24 часа;)

Надеюсь, @SebastianM скоро рассмотрит новый релиз :)

Спасибо

@ doom777 Не ПРИОРИТЕТ 0 ВАЖНЫЙ, но очень важный.

Angular собирается выпустить v9.0.0, которая по умолчанию будет включать ivy, и этот пакет будет бесполезен с этой версией. Если PR исправил это, я действительно не понимаю, почему бы не выпустить новую версию.

Кроме того, я не вижу причин, по которым этот пакет все еще находится в стадии бета-тестирования. Здесь все работает нормально, ни багов, ни нестабильности.

PR, который я представил (# 1634), должен был обратиться к компиляции AOT, которая существует уже некоторое время (Angular 4+?), И это должно быть хорошей причиной для выпуска новой бета-версии.

Что касается # 1647: Ivy требует, чтобы он требовал AOT, поэтому он сломался бы на Ivy, но могут быть другие вещи в библиотеке, которые необходимо изменить, чтобы сделать ее полностью совместимой с Ivy.

На работе я начинаю экспериментировать с созданием нашего приложения с Ivy, но есть и другие пакеты, от которых мы зависим, которые, похоже, имеют проблемы, и обновление до Ivy не является основным требованием нашего приложения. Поскольку у нас есть больше времени для тестирования и мы потенциально добавляем дополнительные функции сопоставления, я могу рассмотреть возможность внесения любых изменений, которые я считаю необходимыми, но я не могу взять на себя никаких обязательств относительно того, сколько времени у меня есть, чтобы помочь с этим проектом.

@ iget-master Я бы также не стал говорить об отсутствии ошибок и нестабильности (не то чтобы я с ними сталкивался, но вполне могут быть проблемы, и сохранение тега «beta» действительно упрощает итерацию и изменить то, что нужно изменить, прежде чем иметь более стабильный API)

Мы получаем ответы от участников, как будто это не является приоритетом. Я мог бы поспорить с этим и сказать, что выпуск этого исправления AOT и поддержка Ivy в некоторой степени важны. AOT существует уже некоторое время, и через пару месяцев Angular 9 появится вместе с (ожидаемым) стабильным Ivy. Лично я не вижу причин утверждать, что это ровно нулевой приоритет.

Во-вторых, в чем проблема, если просто запустить команду и передать ее в npm?

Автор утверждает, что он, возможно, еще не стабилен, хорошо, и в этом случае имеет смысл сохранить флаг бета-версии. НО! Разве бета-версия не является чем-то непостоянным? Это означает, что следует ожидать частых выпусков, но мы видим едва ли один выпуск в месяц. Было бы неплохо выпустить текущую версию как стабильную и ту, которая исправляет Ivy под флагом бета-тестирования, если есть серьезные опасения по поводу ее нестабильности.

И помните, что ~ 60 тысяч человек в неделю потенциально могут извлечь выгоду из новой версии;)

Спасибо

Я думаю о том, чтобы точно скопировать это репо и выпустить его в npm под другим именем, чтобы каждый, кто смотрит этот поток, мог попробовать его, пока не догонит. Кто-нибудь еще думает об этом?

Я в деле.

Мы не имеем ничего против того, чтобы вы разделили и развернули нашу библиотеку, поэтому она с открытым исходным кодом. 😄
Я пытаюсь разобраться, но это не так просто, как «запустить команду». Я ожидаю, что beta.8 будет выпущена задолго до Angular 9.

Чем могу помочь? Любая функция требует тестирования или разработки?

@mruknowme, пожалуйста, не делай этого.

@ doom777 только начинал делать это до того, как это репо

Обновление: я пытаюсь выпустить это, к сожалению, Себастьян недоступен, и только он может развертывать npm.

Привет,

случайно увидел эту ветку. @Ephraim, где ты отправил мне сообщение?
Может быть, мои настройки push испорчены 😕 Я могу отправить новую версию, когда я
дом. Извините за задержку!

Ефраим Ханцис [email protected] schrieb am Mo.16 сентября 2019 гм
17:06:

Обновление: я пытаюсь выпустить это, к сожалению, Себастьян
недоступен, и только он может развертывать npm.

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRABQG3CO4VBHKU3N23QJ6OHZA5CNFSM4HSA7KD2YY3PNVWWK3TUL52XG43JNVB3PNVWWK3TUL52XG43DFVB2
или отключить поток
https://github.com/notifications/unsubscribe-auth/AACDGRFLFLAZMJKKVQZUM7DQJ6OHZANCNFSM4HSA7KDQ
.

Привет @SebastianM ,

извините, не могу вспомнить, что отправлял вам сообщение!
Почему я должен послать тебе сообщение?

Ваше здоровье,
Ефрем

@SebastianM , вы имеете в виду комментарий @ doom777 https://github.com/SebastianM/angular-google-maps/issues/1647#issuecomment -524882295?

Кстати, я также написал вам сообщение в твиттере: D

Мы все понимаем, что вы заняты, и ценим ваше время и усилия по поддержке этих плагинов :)

Привет! Рад, что ты рядом. Я всегда стараюсь связаться с вами в твиттере.

@SebastianM Если вы уже доступны, можете ли вы обновить шаблон stackblitz, чтобы использовать последнюю версию AGM?

Да, конечно

Утро Пн, 16. сен.2019 гм 20:20 Uhr schrieb Ephraim Khantsis <
[email protected]>:

@SebastianM https://github.com/SebastianM Если вы уже доступны,
вы можете обновить шаблон stackblitz, чтобы использовать последнюю версию AGM?

-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/SebastianM/angular-google-maps/issues/1647?email_source=notifications&email_token=AACDGRDKLMG7VFW7CP6KVYDQJ7E5PA5CNFSM4HSA7KD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62BQDQ#issuecomment-531896334 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AACDGRA3WT7CYHW3JSZEMC3QJ7E5PANCNFSM4HSA7KDQ
.

@SebastianM @agm/core 1.0.0 отлично работал с Angular 9.0.0-next.6 но с Angular 9.0.0-next.7 он снова начал выдавать эту ошибку https://github.com/angular/angular/issues/32506

Не могли бы вы взглянуть?

Посмотрел на это только что, @agm/core 1.0.0 имеет пакеты, в которых декораторы представлены странным для меня образом. Я изучаю это.

Спасибо @JoostK , с нетерпением жду исправления :)

Итак, я смог подтвердить, что ngcc не может справиться с тем, как создаются декораторы, начиная с https://github.com/ng-packagr/ng-packagr/pull/1401 , выпущенного в ng-packagr 5.5.1.

Однако это все еще удивительно, поскольку файл yarn.lock в этом репо предполагает, что используется ng-packagr 5.4.3. @SebastianM не могли бы вы подтвердить, использовалась ли для публикации более новая версия ng-packagr без обновления файла yarn.lock ?

Нет, использовался с 5.4.3

Обновление: попытка с 5.5.1 тоже не помогает

Вот PR, который касается того, как декораторы присутствуют в @agm/core 1.0.0: https://github.com/angular/angular/pull/32901

@ doom777 откуда ты знаешь, это ты опубликовал релиз? Я не совсем понимаю, как в выпуске 1.0.0 @agm/core могут быть вызовы ctorParameters и __decorate если он был построен с чем-либо, кроме ng-packagr 5.5.1 .

Плагин отлично работает с Angular 9.0.0-next.9, спасибо @JoostK за

Я наконец перешел на @ angular / google-maps, пока отлично работает :)

хорошо, удачи. Имейте в виду, что в нем гораздо меньше функций.

Просто добавлю: нам очень трудно быть совместимыми с angular ivy в версии 8.0, но в 9.0 она работает нормально.

"@angular/core": "~9.1.0",
когда я добавляю forRoot в функциональный модуль и вызываю его в AppModule->Imports . Возникает эта ошибка. Не могу найти решения. Я использовал Angular CLI Today для создания нового приложения.

"@angular/core": "^9.1.6",
одно и тоже...
«когда я добавляю forRoot в функциональный модуль и вызываю его в AppModule-> Imports. Эта ошибка возникает. Не могу найти никакого решения. Я использовал Angular CLI Today для создания нового приложения».

Наконец выяснил проблему для моего случая.

... в модуле ...

let registry = null;

export class UiUniversalCoreModule {
  public static forRoot(elements): ModuleWithProviders<UiUniversalCoreModule> {
    // Angular 9 required <UiUniversalCoreModule>
    registry = elements; // and had to change this code to work.
    return {
      ngModule: UiUniversalCoreModule,
      providers: [
        ComponentBuilderService
      ]
    };
  }
}

... Изменился на ...

let registry = null;
function ngModuleIssue(elements){
  registry = elements;
  return ComponentBuilderService;
}

export class UiUniversalCoreModule {
  public static forRoot(elements): ModuleWithProviders<UiUniversalCoreModule> {
    return {
      ngModule: UiUniversalCoreModule,
      providers: [
        ngModuleIssue(element)
      ]
    };
  }
}
Была ли эта страница полезной?
0 / 5 - 0 рейтинги