Sanu0074
@Sanu0074

Почему при сборке AOT, приложение падает с ошибкой «undefined is not iterable»?

Я использую Compiler из "@angular/core" для создания компонентов на лету. Обычная сборка отрабатывает нормально, приложение работает без проблем.
Но, когда я делаю сборку с флагом --prod, это включает в себя следующие опции сборки:
"optimization": true,
"outputHashing": "none",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"serviceWorker": true


После этого когда происходит вызов метода createCompiler() падает ошибка:
undefined is not iterable (cannot read property Symbol(Symbol.iterator))


Вот как выглядит мой модуль в котором создается компилятор:
export function createJitCompiler() {
	return new JitCompilerFactory().createCompiler([{useJit: true}]);
}

@NgModule({
	imports: [
		CommonModule
	],
	exports: [
		DynamicComponent
	],
	declarations: [
		DynamicComponent
	]
})
export class DynamicLoaderModule {
	static forRoot(): ModuleWithProviders {
		return {
			ngModule: DynamicLoaderModule,
			providers: [
				{provide: Compiler, useFactory: createJitCompiler},
				{provide: NgModuleFactoryLoader, useClass: ModuleLoader}
			]
		}
	}
}


Я читал в этой статье о том что если использовать AOT-сборку, то компилятор будет не доступен во время выполнения приложения. И там же пишут что для решения данной проблемы можно создать отдельный модуль с сервисом, куда нужно будет вручную добавить компилятор.
Я сделал как там написано, но все равно проблема актуальна. Версия Angular 7.0.1.
Кто нибудь решал подобные задачи? Либо я что-то упустил?
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 1
virtual_hack2root
@virtual_hack2root
.NET Core, JS, DevOps
Посмотри тут JIT
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы