Описание проблемы
При компиляции с 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
.
ng new
@agm/core
и настройте импорт по умолчанию
imports: [
BrowserModule,
AgmCoreModule.forRoot({
apiKey: environment.mapsApiKey,
})
]
tsconfig.app.json
:
{
...
"angularCompilerOptions": {
"enableIvy": true
}
}
angular.json
чтобы обойти « ленивые маршруты не найдены »:
{
"projects": {
"my-project": {
"architect": {
"build": {
"options": {
...
"aot": true,
}
}
}
}
}
}
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
, то модуль будет исключен из компиляции.
Невозможно воспроизвести. Может быть, в 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)
]
};
}
}
Самый полезный комментарий
Я согласен с тем, что это должно быть выпущено как можно скорее. Несовместимость этой библиотеки с ivy - одна из немногих проблем, которые не позволяют нам протестировать ivy в нашем среднем веб-приложении.