Angular: Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ поддСрТиваСтся Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Ссли fullTemplateTypeCheck Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΈ @dynamic Π½Π΅ дСйствуСт

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 30 Π°ΠΏΡ€. 2018  Β·  106ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: angular/angular

Π― ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽ ...


[X] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  <!-- Please search GitHub for a similar issue or PR before submitting -->
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
[ ] Other... Please describe:

Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ создании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ skipTemplateCodegen ΠΈ strictMetadataEmit для true ΠΈ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° RouterModule.forChild([]) ngModule decorate RouterModule.forChild([]) это Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции Function calls are not supported in decorators but 'RouterModule' was called.

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ fullTemplateTypeCheck Π² true ошибка Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, @dynamic ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС.

ОТидаСмоС повСдСниС

Ошибка Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @dynamic .

Π― Ρ‚Π°ΠΊΠΆΠ΅ оТидаю, Ρ‡Ρ‚ΠΎ установка fullTemplateTypeCheck здСсь Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этот Ρ„Π»Π°Π³ большС относится ΠΊ привязкС Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ….

МинимальноС воспроизвСдСниС Π·Π°Π΄Π°Ρ‡ΠΈ с инструкциями

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
  imports: [
    RouterModule.forChild([])
  ]
})
export class LibModule { }

УстановитС tsconfig со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ;

  "angularCompilerOptions": {
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true
  }

ΠŸΡ€ΠΈ транспиляции Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½Π° ошибка;

Error during template compile of 'LibModule' Function calls are not supported in decorators but 'RouterModule' was called.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ "fullTemplateTypeCheck": true ошибки Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. (Π₯отя это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ странно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта)

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ: https://github.com/alan-agius4/angular-issue-23609

Какова мотивация / Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования для измСнСния повСдСния?

Π’ NG 5 ошибок Π½Π΅ Π±Ρ‹Π»ΠΎ

ΠžΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π°Ρ срСда


Angular version: 6.0.0-rc-6
<!-- Check whether this is still an issue in the most recent Angular version -->

БвязанныС вопросы:
https://github.com/dherges/ng-packagr/issues/822
https://github.com/dherges/ng-packagr/issues/778
https://github.com/dherges/ng-packagr/issues/727
https://github.com/dherges/ng-packagr/issues/765
https://github.com/dherges/ng-packagr/issues/767
https://github.com/dherges/ng-packagr/issues/885

P5 compiler ve fixed by Ivy high confirmed triage #1 bufix

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π£ΠΎΡ€Π΄Π°: @wardbell

Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ / Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ angularCompilerOptions . Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² этом воспроизвСдСнии

Π”ΠΎΠ±Π΅ΠΉΡ‚Π΅ΡΡŒ успСха

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

Π‘Π±ΠΎΠΈ сборки

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

НаблюдСниС

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π£ΠΎΡ€Π΄Π° установка "skipTemplateCodegen": true Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ "fullTemplateTypeCheck": true Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ для получСния ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки ΠΎΡ‚ ngc.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ / Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мысли

По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сводится ΠΊ «всСму, Ρ‡Ρ‚ΠΎ статичСски анализируСтся для AoTΒ» (см. Β«ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ статичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ компилятора ). Imo, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ strictMetadataEmit ΠΈΠ»ΠΈ ΠΌΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ уТасно Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ πŸ˜†

По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² static forRoot(): ModuleWithProviders , ΠΈΠ½ΠΎΠ³Π΄Π° Π² зависимости ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°, которая становится ΠΈΠ»ΠΈ Π½Π΅ становится «статичСски Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉΒ». ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ мСня Π½Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΡ€ΠΎ, ΠΈ я Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прСдполоТСния ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… смутных воспоминаниях ΠΎ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²ΠΈΠ΄Π΅Π» Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ / Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ngc ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС?

Π§Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ngc распСчатываСт Π½ΠΎΠΌΠ΅Ρ€ строки Π² исходном ΠΊΠΎΠ΄Π΅, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ВсС 106 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ нСбольшоС Ρ€Π΅ΠΏΠΎ, воспроизводящСС это.

Будя ΠΏΠΎ ΠΌΠΎΠ΅ΠΉ быстрой ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ static_reflector statics Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ members / statics . НапримСр, RouterModule Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡Π»Π΅Π½ forChild .

image

Π£ мСня Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» fullTemplateTypeCheck Π² lib/tsconfig.json ΠΈ это Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния.

Моя рСпродукция:

git clone https://github.com/johnpapa/angular-ngrx-data.git ngrx-data-FAIL
cd ngrx-data-FAIL
git checkout ng-v6-FAIL
npm install

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ngrx-data

npm run build-lib

Π‘Π±ΠΎΡ€ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ. Консоль Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚

BUILD ERROR
Error during template compile of 'NgrxDataModule'
  Function calls are not supported in decorators but 'StoreModule' was called.
  ...

Π—Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π²Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ngrx Π² NgrxDataModule (оставив FooModule ) ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ снова.
На этот Ρ€Π°Π· сборка Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈ создаСтся ΠΏΠ°ΠΊΠ΅Ρ‚ Π² dist .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ FooModule Π² порядкС.

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π£ΠΎΡ€Π΄Π°: @wardbell

Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ / Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ angularCompilerOptions . Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² этом воспроизвСдСнии

Π”ΠΎΠ±Π΅ΠΉΡ‚Π΅ΡΡŒ успСха

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

Π‘Π±ΠΎΠΈ сборки

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

НаблюдСниС

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π£ΠΎΡ€Π΄Π° установка "skipTemplateCodegen": true Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ "fullTemplateTypeCheck": true Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ для получСния ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки ΠΎΡ‚ ngc.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ / Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мысли

По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сводится ΠΊ «всСму, Ρ‡Ρ‚ΠΎ статичСски анализируСтся для AoTΒ» (см. Β«ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ статичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ компилятора ). Imo, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ strictMetadataEmit ΠΈΠ»ΠΈ ΠΌΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ уТасно Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ πŸ˜†

По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² static forRoot(): ModuleWithProviders , ΠΈΠ½ΠΎΠ³Π΄Π° Π² зависимости ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°, которая становится ΠΈΠ»ΠΈ Π½Π΅ становится «статичСски Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉΒ». ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ мСня Π½Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΡ€ΠΎ, ΠΈ я Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прСдполоТСния ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… смутных воспоминаниях ΠΎ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²ΠΈΠ΄Π΅Π» Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ / Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ngc ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС?

Π§Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ngc распСчатываСт Π½ΠΎΠΌΠ΅Ρ€ строки Π² исходном ΠΊΠΎΠ΄Π΅, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Бпасибо, @dherges , Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ

Π­Ρ‚ΠΎΡ‚ вопрос Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Angular Π½Π΅ сдСлаСт этот Π²Ρ‹Π±ΠΎΡ€ понятным ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π΅ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ сСйчас Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
ng build --prod
Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ngx-progressbar
ΠΈ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ: Β«Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ поддСрТиваСтся Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½ΠΎ Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ NgProgressModuleΒ».

Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ angular cli с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ tsconfig? Если Π½Π΅ я
ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ этого, Π»ΠΈΠ±ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎ ng-packagr v3.0.0-rc.3

Π’ срСду, 9 мая 2018 Π³., Π² 15:47, iamimbohacker [email protected]
написал:

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ сСйчас Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?
ΠŸΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΊΠΎΠ³Π΄Π° ng build --prod
я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ngx-progressbar
ΠΈ я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ: "Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ поддСрТиваСтся Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½ΠΎ
Π‘Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ Β«NgProgressModuleΒ». "

-
Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠ²Π»ΡΠ΅Ρ‚Π΅ΡΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π΅ΠΌΡ‹.
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/angular/angular/issues/23609#issuecomment-387743732 ,
ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AQv-WtOWkvdrrvf6luk2S0wYaFWeLaejks5twvNugaJpZM4TsqoI
.

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Angular CLI 6.0.0. Π― Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ng-packagr

@dherges Ρƒ мСня Π΅ΡΡ‚ΡŒ эти
image

Π½ΠΎ я всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² AOT

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° снимкС экрана @ alan-agius4, Ρƒ мСня Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС Π½Π° dherges / ng-packagr # 860.

Для записи Ρƒ мСня Π΅ΡΡ‚ΡŒ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с послСдними вСрсиями angular ΠΈ ng-packagr (3.0.0), ΠΈ для Ρ‚Ρ€Π΅Ρ… Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true (это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ создании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ angular-cl).
Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΏΠΈΠ°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ сдСлали @JoostK, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π½ΠΎΠ·Π° Π² Π·Π°Π΄Π½ΠΈΡ†Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ способа ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я заставил это Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π·Π½Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² это Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ состояниС), я Π²Ρ‚ΠΎΡ€ΠΎΠΉ Запрос @dherges для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡˆΠΈΠ±ΠΎΠΊβ€¦

Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠ’Π¬: Π― нашСл источник своСй ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, это Π±Ρ‹Π»ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ объявлСниС paths Π² tsconfig, ΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π°ΠΌ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ для диагностики этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ...

Π”ΡƒΠΌΠ°ΡŽ, Ρƒ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π’ ΠΌΠΎΠ΅ΠΌ случаС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ сгСнСрированы ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:

`` library.metadata.json выглядСла Ρ‚Π°ΠΊ
"ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅": {}


Then I changed the public_api.ts in the library project:

ΠΎΡ‚

экспорт * ΠΈΠ· './lib/auth';

ΠΊ

экспорт * ΠΈΠ· './lib/auth/index';
``

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ вопрос?

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ… Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? КакиС воздСйствия это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ? НСпонятно, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΡ‹ΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс стоит Π·Π° этим. ДоступныС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ содСрТат подробностСй. НапримСр, компилятор Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π°.


@NgModule ({})

export class MyStoreModule {
static forRoot (): ModuleWithProviders {
return StoreModule.forRoot (Ρ€Π΅Π΄ΡƒΠΊΡ‚ΠΎΡ€Ρ‹);
}
конструктор (частный ΠΌΠ°Π³Π°Π·ΠΈΠ½: Магазин) {
console.log ("ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ --->", this.store);
}
}


@NgModule ({
ΠΈΠΌΠΏΠΎΡ€Ρ‚: [
StateProviderModule.forRoot (),
],
поставщики: [
]
})

экспортный класс ABCModule {}


Ошибка ΠΏΡ€ΠΈ компиляции шаблона "ABCModule"
Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ поддСрТиваСтся Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½ΠΎ StoreModule Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ Π² MyStoreModule
MyStoreModule Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ StoreModule.

ΠŸΡ€ΡΠΌΠ°Ρ ссылка Π½Π° эти классы Π² ABCModule Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ .. Но Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ΡŒ стандарту «раздСлСния отвСтствСнности». Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ??

Π― Ρ‚ΠΎΠΆΠ΅ столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρƒ мСня Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ случай:
Π― ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽ свои Route ΠΊΠ°ΠΊ Π΄Π΅Ρ€Π΅Π²ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡ… Π² иСрархичСской структурС Π² Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ.
ВмСсто RouterModule ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠΏΠ»ΡŽΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ этого Π΄Π΅Ρ€Π΅Π²Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

export const ROUTE_TREE: RouteTree  = [
    {
        path: PATH_PARENT,
        component: ParentComponent,
        treeChildren: [
            {
                path: PATH_CHILD_1,
                component: ChildComponent,
                data: {
                    num: 1
                },
            },
                path: PATH_CHILD_2,
                component: ChildComponent,
                data: {
                    num: 2
                },
            }
        ]
    }
];

Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ:

export const ROUTE_TREE: RouteTree  = [
    {
        path: PATH_PARENT,
        component: ParentComponent
    },
    {
        path: PATH_CHILD_1,
        component: ChildComponent,
        data: {
            num: 1
        },
    },
        path: PATH_CHILD_2,
        component: ChildComponent,
        data: {
            num: 2
        },
    }
];

для RouterModule .
ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π΄Π²Π°ΠΆΠ΄Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ Route s, Ссли я Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСняю, добавляю ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡŽ, я написал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ «выравнивания» для своСго Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΅Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ RouterModuleforRoot .

JIT Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π½ΠΎ AOT Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, говоря Function calls are not supported in decorators .

Π―, вСроятно, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΏΠΎΠΉΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ»ΠΎΡΠΊΡƒΡŽ Route s ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ.

@Springrbua Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π² вашСм случаС ошибка Π½Π° самом Π΄Π΅Π»Π΅ являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сглаТивания Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°.

@ alan-agius4 Π― ΠΎΠΆΠΈΠ΄Π°Π» этого, Π½ΠΎ Π½Π΅ совсСм понимаю ΠΏΠΎΡ‡Π΅ΠΌΡƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΉΡ‚ΠΈ простой способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ...

Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²ΠΎ врСмя компиляции, Π° Π½Π΅ Π²ΠΎ врСмя выполнСния.

@ alan-agius4 спасибо Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° я это знаю, это каТСтся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ...

Π•ΡΡ‚ΡŒ новости ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ? Π£ мСня здСсь довольно ΠΌΠ½ΠΎΠ³ΠΎ ошибок: https://github.com/formly-js/ngx-formly/issues/996.

Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ luuuuv Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это исправлСнным :-)

Π― Ρ…ΠΎΡ‚Π΅Π» ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π² пятый Ρ€Π°Π· столкнулся с этой ошибкой ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ всСх своих дСмонстрационных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, основного прилоТСния ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (3 дСмонстрации, 1 основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ 3 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ). Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ эти ошибки Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… модулях. Один ΠΈΠ· Π½ΠΈΡ… упоминался Π²Ρ‹ΡˆΠ΅ (formly-js / ngx-formly # 996), Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚ @ ngrx / core, Π³Π΄Π΅ говорится ΠΎ Ρ‚ΠΎΠΉ ΠΆΠ΅ ошибкС:

Error during template compile of 'CoreStoreModule'
  Function calls are not supported in decorators but 'StoreModule' was called.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ 3 взяты ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² forRoot Π² ΠΌΠΎΠΈΡ… собствСнных модулях. ΠžΠ±Ρ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠΎΠΉ для всСх Π½ΠΈΡ… являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ InjectionToken s. Π― ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½, Ρ‡Ρ‚ΠΎ это относится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ модулям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ forRoot ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для InjectionToken .

Π­Ρ‚ΠΎ заставляСт мСня ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… forRoot, ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π­Ρ‚ΠΎ становится ΠΎΡ‡Π΅Π½ΡŒ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, особСнно ΠΊΠΎΠ³Π΄Π° эти InjectionTokens взяты ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ.

Π’ любом случаС, я ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»Π΅Π½ Π·Π° всС усилия, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ для устранСния этой ошибки. Если я ΠΌΠΎΠ³Ρƒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, я Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‡ΡŒ. Π― Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с этим. ΠŸΠΎΡ…ΠΎΠΆΠ΅, это связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит. НадСюсь, это скоро Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡΡ.

ПослС пСрСмСщСния поставщиков ΠΈΠ· forRoot Π½Π° StoreModule , Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ с EffectsModule.forRoot ( @ngrx/effects ) ΠΈ StoreDevtoolsModule.instrument() ( @ngrx/store-devtools ).

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π² EffectsModule ΠΈ StoreDevtoolsModule Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ InjectionTokens .

Π­Ρ‚Π° ошибка ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π° чистый Ρ„Π°ΠΉΠ» модуля:

@NgModule({
  imports: [
    StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState }),
    EffectsModule.forRoot([ApiEffects, GridEffects]),
    StoreDevtoolsModule.instrument(),
  ],
})
export class PrmCoreStoreModule { }

Π’ бСспорядок:

@NgModule({
  providers: [
    // STORE DEV TOOLS MODULE instrument() Temporary Fix
    DevtoolsExtension,
    DevtoolsDispatcher,
    StoreDevtools,
    {
      provide: INITIAL_OPTIONS,
      useValue: {},
    },
    {
      deps: [REDUX_DEVTOOLS_EXTENSION, STORE_DEVTOOLS_CONFIG],
      provide: IS_EXTENSION_OR_MONITOR_PRESENT,
      useFactory: createIsExtensionOrMonitorPresent,
    },
    {
      provide: REDUX_DEVTOOLS_EXTENSION,
      useFactory: createReduxDevtoolsExtension,
    },
    {
      deps: [INITIAL_OPTIONS],
      provide: STORE_DEVTOOLS_CONFIG,
      useFactory: createConfig,
    },
    {
      deps: [StoreDevtools],
      provide: StateObservable,
      useFactory: createStateObservable,
    },
    {
      provide: ReducerManagerDispatcher,
      useExisting: DevtoolsDispatcher,
    },

    // EFFECTS MODULE forRoot Temporary Fix
    EffectsRunner,
    EffectSources,
    Actions,
    ApiEffects,
    GridEffects,
    {
      deps: [ApiEffects, GridEffects],
      provide: ROOT_EFFECTS,
      useFactory: createSourceInstances,
    },

    // STORE MODULE forRoot Temporary Fix
    { provide: _INITIAL_STATE, useValue: initialPrmCoreState },
    {
      deps: [_INITIAL_STATE],
      provide: INITIAL_STATE,
      useFactory: _initialStateFactory,
    },
    { provide: _INITIAL_REDUCERS, useValue: prmCoreActionReducers },
    {
      provide: _STORE_REDUCERS,
      useExisting: prmCoreActionReducers instanceof InjectionToken ? prmCoreActionReducers : _INITIAL_REDUCERS,
    },
    {
      deps: [Injector, _INITIAL_REDUCERS, [new Inject(_STORE_REDUCERS)]],
      provide: INITIAL_REDUCERS,
      useFactory: _createStoreReducers,
    },
    {
      provide: META_REDUCERS,
      useValue: [],
    },
    {
      provide: _REDUCER_FACTORY,
      useValue: combineReducers,
    },
    {
      deps: [_REDUCER_FACTORY, META_REDUCERS],
      provide: REDUCER_FACTORY,
      useFactory: createReducerFactory,
    },
    ACTIONS_SUBJECT_PROVIDERS,
    REDUCER_MANAGER_PROVIDERS,
    SCANNED_ACTIONS_SUBJECT_PROVIDERS,
    STATE_PROVIDERS,
    STORE_PROVIDERS,
  ],
})
export class PrmCoreStoreModule { }

Π’ качСствС примСчания, я сСйчас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с forRoot ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Angular APP_INITIALIZER InjectionToken ΠΈΠ· ConfigModule ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° @ngx-config/core ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.

+1
На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ мою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠ³ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ статус этого исправлСния.

Π•ΡΡ‚ΡŒ обновлСния? Π­Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°ΡˆΡƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ с angular 5 Π½Π° 6. Наши Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ содСрТат 3 forRoot. МнС Π½Π΅ нравится Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ forRoot Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Богласовано. Π£ нас Π΅ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ исправлСно.

@ jfpicard1 , этот Ρ„Π»Π°Π³ Π½Π΅ связан с ΡƒΠ³Π»ΠΎΠ²Ρ‹ΠΌ компилятором ΠΈ этой ошибкой.

Π£ мСня Π±Ρ‹Π»Π° аналогичная ошибка, которая ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ использовании yarn link .
Π˜ΡΠΏΡ€Π°Π²ΠΈΠ» установкой ΠΈΠ· исходников.

+1 Π•ΡΡ‚ΡŒ новости ΠΏΠΎ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅?

@shairez Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»ΠΈ Π² этом. Моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° ΠΌΠΎΠ΅Π³ΠΎ ΠΌΠΎΠ½ΠΎΡ€Π΅ΠΏΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ свои Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΌΠΎΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· npm link . НадСюсь, Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Из ссылки Π½Π° ngx-api-utils , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ΠΈ связаны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² InjectionToken providedIn ΠΈ factory ?

Π‘ΠΌ. Https://github.com/ngx-api-utils/ngx-api-utils/commit/276f50afb7d2d6884047adc78b5888026080574e

@danielmhair Π― слСдил Π·Π° вашим ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ Π²Ρ‹ΡˆΠ΅ https://github.com/angular/angular/issues/23609#issuecomment -401456878 ΠΈ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π» ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ forRoot ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт InjectionToken ΠΈ это Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, тСряя удобство forRoot , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я ΠΎΡ‡Π΅Π½ΡŒ ΡΠΊΡƒΡ‡Π°ΡŽ!

Π― Ρ…ΠΎΡ‚Π΅Π» ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ возмоТности ΠΊΠΎΠΏΠ½ΡƒΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ InjectionToken ΠΈΠ»ΠΈ Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· эти https://github.com/ngx- ΠΏΡ€ΠΎΡˆΠ΅Π» RegExp

Π― ΠΎΡ‡Π΅Π½ΡŒ надСюсь, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ исправлСна ​​как ΠΌΠΎΠΆΠ½ΠΎ скорСС ΠΈΠ»ΠΈ ΠΌΡ‹ смоТСм ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ!

Π”Π°, я Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΊΡƒΡ‡Π°ΡŽ ΠΏΠΎ forRoot . Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π½Π°Π²ΠΈΠΆΡƒ этот ΠΎΠ±Ρ…ΠΎΠ΄. Π‘ этим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Π― всС Π΅Ρ‰Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽ, Π½ΠΎ это с ngrx, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

На самом Π΄Π΅Π»Π΅, это Π½Π΅ соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я размСстил здСсь: https://github.com/angular/angular/issues/23609#issuecomment -401460241. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, я Π½Π΅ скопировал всС ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… forRoot :

    StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState }),
    EffectsModule.forRoot([ApiEffects, GridEffects]),
    StoreDevtoolsModule.instrument(),

По сути, Chrome-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ redux devtools ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ redux Π½Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ StoreDevtoolsModule.instrument Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. А Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ для выполнСния GET для ΠΌΠΎΠ΅ΠΉ сСтки ΠΈ ΠΌΠΎΠΈΡ… сСток, Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π˜Ρ‚Π°ΠΊ, Π² настоящСС врСмя я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ это связано с нСиспользованиСм forRoot. ΠœΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ.

Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символичСскиС ссылки (ΠΈ npm link ΠΈ yarn link ). Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΠΈ Π² node_modules - это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ npm install ΠΏΡ€ΠΈ распаковкС Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ².

Π’Ρ‹ сказали Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку пряТи. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ yarn add @my/lib<strong i="5">@link</strong>:../dist/my-lib Ρ‚ΠΎ ΠΆΠ΅ самоС, Π²Π΅Ρ€Π½ΠΎ? Π­Ρ‚ΠΎ добавляСт ΠΊ package.json "@my/lib": "link:../dist/my-lib" . Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ я сказал, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ npm link Π² своСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. ΠŸΠΎΡ…ΠΎΠΆΠ΅, это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅. Π­Ρ‚ΠΎ просто ΡƒΠ΄ΠΎΠ±Π½ΠΎ, поэтому ΠΊΠΎΠ³Π΄Π° я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ yarn , ΠΎΠ½ добавляСт эти ссылки.

Π˜Ρ‚Π°ΠΊ, Ρƒ вас просто Π΅ΡΡ‚ΡŒ процСсс Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ для копирования ΠΏΠ°ΠΏΠΎΠΊ, @dherges?

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ваш процСсс сборки обновляСт dist, Π΅ΠΌΡƒ придСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ dist, поэтому я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Π» связываниС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. А ΠΊΠ°ΠΊ насчСт обСспСчСния зависимостСй Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ?

НапримСр, Ρƒ мСня Π΅ΡΡ‚ΡŒ:
Lib 1
Lib 2 зависит ΠΎΡ‚ lib 1
Lib 3 зависит ΠΎΡ‚ lib 1
По ΠΎΠ΄Π½ΠΎΠΉ дСмонстрации для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
МоС основноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ lib 1, lib 2 ΠΈ lib 3.

Полагаю, Ρƒ мСня Π±ΡƒΠ΄Π΅Ρ‚ просто ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡ… зависимостСй. А Π·Π°Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° я ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽ, просто Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ добавляю ΠΈΡ… Π² package.json.

И ΠΈΠΌΠ΅ΠΉΡ‚Π΅ сцСнарий послС установки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Или сцСнарий postbuild.

@dherges ΠΊΠ°ΠΊ насчСт установки зависимостСй ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?

Π₯ΠΎΡ€ΠΎΡˆΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ· dist/my-lib Π² my-app/node_modules/@my/lib , Π½ΠΎ ΠΊΠ°ΠΊ насчСт установки зависимостСй my-lib Π² my-app/node_modules ?

Π₯ΠΎΡ€ΠΎΡˆΠΎ, @dherges, я нашСл Π»ΡƒΡ‡ΡˆΠΈΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. Π’ dist/my-lib я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ npm pack , Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ yarn add @my/lib<strong i="8">@file</strong>:../dist/my-lib/my-lib-3.0.0.tgz Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ dist (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²), Π½ΠΎ я всС Π΅Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ этой ошибки, поэтому Π² ΠΌΠΎΠ΅ΠΌ случаС yarn link Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.

Π•ΡΡ‚ΡŒ новости ΠΏΠΎ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅? ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, это основная ΠΈΠ΄ΠΈΠΎΠΌΠ° angular, ΠΈ ΠΎΠ½Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ 3 мСсяца. ΠŸΠΎΡ‡Π΅ΠΌΡƒ это Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ошибка ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ довольно ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для этого, ΠΈ это Π±Ρ‹Π»ΠΎ прСпятствиСм для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Angular 6 для ΠΌΠ½ΠΎΠ³ΠΈΡ…,

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с нСсоблюдСниСм Ρ„Π°ΠΉΠ»ΠΎΠ² index.ts Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ исправлСна ​​в выпускС 6.0.8 (см. Https://github.com/angular/angular/pull/22856).

Π― Π½Π΅ знаю, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ симптомы описанныС здСсь симптомы, Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно, Ссли Π±Ρ‹ люди протСстировали.

Π― нашСл Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²Ρ‹ΠΉ, ΠΊΠ°ΠΊ ΠΌΠΎΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π³Π΄Π΅ я это нашСл, здСсь:
https://github.com/dschnelldavis/angular2-json-schema-form/issues/273#issuecomment -407184242. Π˜Ρ‚Π°ΠΊ, Π²ΠΎΡ‚ ΠΌΠΎΠΉ ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с ngrx.


export const storeModuleForRoot: ModuleWithProviders = StoreModule.forRoot(prmCoreActionReducers, { initialState: initialPrmCoreState })
export const effectsModuleForRoot: ModuleWithProviders = EffectsModule.forRoot([ApiEffects, GridEffects])
export const storeDevToolsModuleForRoot: ModuleWithProviders = StoreDevtoolsModule.instrument()

@NgModule({
  imports: [
    effectsModuleForRoot,
    storeModuleForRoot,
    storeDevToolsModuleForRoot,
  ],
})
export class PrmCoreStoreModule { }

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ModuleWithProviders , ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ другая ошибка.

Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ [email protected] Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½, ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ», исправлСна ​​ли эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π― размСстил здСсь Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ https://github.com/ngx-api-utils/ngx-api-utils/pull/14, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Angular 6.1.0

ПослС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΠΎΡ€ΡŒΠ±Ρ‹ каТСтся, Ρ‡Ρ‚ΠΎ forRoot Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .

Π ΠΠ‘ΠžΠ’ΠΠ•Π’

 public static forRoot(config: ITimoneerTab[]): ModuleWithProviders {
  return {
    ngModule: TabsModule,
    providers: [
      [...]
      {
        provide: APPLICATION_TABS,
        useValue: config
      }
    ]
  };
}

НЕ Π ΠΠ‘ΠžΠ’ΠΠ•Π’
Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ использованиС любой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ сборку.

public static forRoot(config: ITimoneerTab[]): ModuleWithProviders {
  const output = {
    ngModule: TabsModule,
    providers: [
     [...]
      {
        provide: APPLICATION_TABS,
        useValue: config
      }
    ]
  };

  return output;
}

ЗафиксируйтС исправлСниС этого Π² Timoneer

ng build --prod
ERROR in Error during template compile of 'AppTabsModule'
  Function calls are not supported in decorators but 'TabsModule' was called.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ - RouterModule.

@leonardochaia , это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ статичСская функция, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚, поэтому Π² Π½Π΅ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ константы.

ПослС прочтСния ΠΎΡ‚Π²Π΅Ρ‚Π° @leonardochaia я Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ исправил эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΌΠΎΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ console.log() ΠΈΠ· объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° forRoot

Как слСдуСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· контСкста прилоТСния для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ? Π― ΠΏΡ€ΠΎΠ±ΡƒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π² https://github.com/angular/angular-cli/issues/9358#issuecomment -373053053, Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Мой сцСнарий выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

> ng --version
Angular CLI: 6.1.4
Node: 10.4.1
OS: win32 x64
Angular: 6.1.4
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.7.4
@angular-devkit/build-angular      0.7.4
@angular-devkit/build-ng-packagr   0.7.5
@angular-devkit/build-optimizer    0.7.4
@angular-devkit/build-webpack      0.7.4
@angular-devkit/core               0.7.4
@angular-devkit/schematics         0.7.4
@angular/cdk                       6.4.6
@angular/flex-layout               6.0.0-beta.17
@angular/material                  6.4.6
@ngtools/json-schema               1.1.0
@ngtools/webpack                   6.1.4
@schematics/angular                0.7.4
@schematics/update                 0.7.4
ng-packagr                         3.0.6
rxjs                               6.2.2
typescript                         2.7.2
webpack                            4.9.2

Мой код:

import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppSettingsService } from './services/app-settings.service';

export const AppSettingsObject = new InjectionToken('AppSettingsObject');

export function createAppSettingsService(settings) {
  return new AppSettingsService(settings);
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(config: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: AppSettingsObject, useValue: config },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [AppSettingsObject]
        }
      ]
    };
  }
}

Ошибка:

> ng build my-app --prod

Date: 2018-08-29T
Hash: saghsh4ty463f34r4fef
Time: 8585ms
chunk {0} runtime.xxx.js (runtime) 1.05 kB [entry] [rendered]
chunk {1} styles.xxx.css (styles) 102 kB [initial] [rendered]
chunk {2} polyfills.xxx.js (polyfills) 130 bytes [initial] [rendered]
chunk {3} main.xxx.js (main) 128 bytes [initial] [rendered]

ERROR in Error during template compile of 'MyAppModule'
  Function calls are not supported in decorators but 'AppSettingsModule' was called.

Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ?

Π― Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΏΠ»ΠΎΡ…ΠΎ выглядит. НС ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π½ΠΎ это ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 5 Ρ‚Π°ΠΊΠΈΡ… сцСнариях.

Π’ MyAppModule , ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ forRoot , Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ​​как:

export const appSettingsModuleForRoot: ModuleWithProviders = AppSettingsModule.forRoot(yourConfig)

...
imports: [
  ...,
  appSettingsModuleForRoot,
],
...

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ModuleWithProviders ΠΈΠ· @angular/core ΠΈ помСстили Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Π½Π΅ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ appSettingsModuleForRoot .

@danielmhair Бпасибо! На самом Π΄Π΅Π»Π΅ я Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» вашС исправлСниС, ΠΈ это Ρ‚ΠΎΠΆΠ΅ Π½Π΅ сработало для мСня.

Однако Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±Ρ‹Π»Π° Π½Π΅ Π² этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… здСсь исправлСниях, Π° скорСС Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ я создавал ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ config , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдавался Π² этот ΠΌΠ΅Ρ‚ΠΎΠ΄ forRoot ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ AppSettingsModule .

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

/**
 * main.module.ts
 *
// Angular & Lodash
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { assign } from 'lodash';

// Application Modules
import { coreConfig } from '../modules/core';
import { userConfig } from '../modules/user';

// Components
import { MainComponent } from './components/main.component';

const appConfig = assign({}, coreConfig, userConfig);     // <--- This is where the problem came from!!

@NgModule({
  declarations: [
    MainComponent
  ],
  imports: [
    BrowserModule,
    // Application-specific modules
    AppSettingsModule.forRoot(appConfig)
  ],
  providers: [],
  bootstrap: [MainComponent]
})
export class MainModule { }

Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, я Π·Π°ΠΌΠ΅Π½ΠΈΠ» это Π½Π°

/**
 * main.module.ts
 *
@NgModule({
  declarations: [
    MainComponent
  ],
  imports: [
    BrowserModule,
    // Application-specific modules
    AppSettingsModule.forRoot(coreConfig, userConfig)
  ],
  providers: [],
  bootstrap: [MainComponent]
})
export class MainModule { }


/**
 * app.settings.module.ts
 *
export const CoreSettingsObject = new InjectionToken('CoreSettingsObject');
export const UserSettingsObject = new InjectionToken('UserSettingsObject');

export function createAppSettingsService(core, user) {
  return new AppSettingsService(assign({}, core, user));
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(core: Object, user: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: CoreSettingsObject, useValue: core },
        { provide: UserSettingsObject, useValue: user },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [CoreSettingsObject, UserSettingsObject]
        }
      ]
    };
  }
}

Π£Π»ΠΎΠ²ΠΊΠ°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ трСбуСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ forRoot . Π’Π΅ΡΡŒ исполняСмый ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ forRoot ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ статичСскими значСниями.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, я Π·Π°Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» слишком Ρ€Π°Π½ΠΎ. это ΠΊΠ°ΠΊ Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π»ΡƒΠΊ! Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ устранСна .

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚

AppSettingsModule ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я ΡΡΡ‹Π»Π°ΡŽΡΡŒ Π² своих ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… сообщСниях Π² Π²Π΅Ρ‚ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, Π½Π° самом Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области Angular CLI.

Когда я Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ этим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, я Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» свой tsconfig.json Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°ΠΏΠΊΡƒ dist .

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ настройки tsconfig.json
{
    ...
    "paths": {
      "my-lib": [
        "dist/my-lib"
      ],
      "my-lib/*": [
        "dist/my-lib/*"
      ]
    }
}
Π˜Π·ΠΌΠ΅Π½Π΅Π½Ρ‹ настройки tsconfig.json
{
    ...
    "paths": {
      "my-lib": [
        "projects/my-lib"
      ],
      "my-lib/*": [
        "projects/my-lib/*"
      ]
    }
}

Π‘ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Ρ‹ΡˆΠ΅ настройками сборка Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Однако, Ссли я Π²Π΅Ρ€Π½Ρƒ tsconfig.json ΠΊ исходным настройкам, сборка Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я создал Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ github, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Если Π²Ρ‹ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ это Ρ€Π΅ΠΏΠΎ ΠΈ запуститС npm run repro , Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Π³ΠΎΠ²ΠΎΡ€ΡŽ.

Благодаря ΠΏΠΎΠΌΠΎΡ‰ΠΈ @samherrmann ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ процСсс компиляции с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ AOT ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ import ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ index.ts Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, явный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ экспорта для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Angular Π±Ρ‹Π» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ public_api.ts Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ошибки Function calls are not supported in decorators but 'Module' was called. .

Но Π΄Π°ΠΆΠ΅ послС этого всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π° основС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Π² ΠΊΠΎΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ index.ts Π² этих ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… для экспорта Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° нСпосрСдствСнно ΠΈΠ· самих Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

Ρ‚.Π΅. ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

import { TestService } from './services';

ΠΊ

import { TestService } from './services/test.service';

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ см. На https://github.com/kiranjholla/ng-issue-23609-repro/issues/1#issuecomment -417449088.

Π•ΡΡ‚ΡŒ новости ΠΏΠΎ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅?

Π― Ρ€Π΅ΡˆΠΈΠ», пСрСмСстив всС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, function x() {} , Π° Π½Π΅ const x = () =>{}

@albanx Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°?

@yogeshgadge Π’
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π² App.module.ts Ρƒ мСня Π±Ρ‹Π»:

imports: [
   //....
    StoreModule.forRoot(reducers, {
      initialState: () => { //some fun }
    }),

ИзмСнился на

import loadFromFunction from 'utils';

imports: [
   //....
    StoreModule.forRoot(reducers, {
      initialState: loadFromFunction
    }),

ΠΈ utils.ts

export function loadFromFunction() {
}

НадСюсь, это Π΄Π°Π΅Ρ‚ идСю

Π― Π½Π°Ρ‡Π°Π» ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠΎΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π» Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Angular 7.0 (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 6.x). ΠŸΡ€ΠΎΠ±ΠΎΠ²Π°Π» всС ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ прСдлоТСния Π² этой Ρ‚Π΅ΠΌΠ΅, Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Мои forRoot Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ статичны, насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°

./misc/injection-tokens.ts

import {InjectionToken} from '@angular/core';
import {NgForageOptions} from '../config/ng-forage-options';

export const DEFAULT_CONFIG = new InjectionToken<NgForageOptions>('Default NgForage config');

NgForage.module.ts

import {ModuleWithProviders, NgModule} from '@angular/core';
import {NgForageOptions} from './config/ng-forage-options';
import {DEFAULT_CONFIG} from './misc/injection-tokens';

/**
 * NgForage core module
 */
@NgModule({})
export class NgForageModule {

  public static forRoot(config: Partial<NgForageOptions>): ModuleWithProviders<NgForageModule> {
    return {
      ngModule: NgForageModule,
      providers: [
        {
          provide: DEFAULT_CONFIG,
          useValue: config
        }
      ]
    };
  }
}

ВСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { NgForageModule } from 'ngforage';
import { AppComponent } from './app.component';

const ngfm: ModuleWithProviders<NgForageModule> = NgForageModule.forRoot({});

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    ngfm
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

БвязанныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

  • АлорСл / Π½Π³Ρ„ΡƒΡ€Π°ΠΆ # 107
  • АлорСл / Π½Π³Ρ„ΡƒΡ€Π°ΠΆ # 102

Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π΅ΠΊΠ°. НС ΠΌΠΎΠ³Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ AOT Π²ΠΎΠΎΠ±Ρ‰Π΅: ((

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ 7.0.2 ΠΈ 7.0.3 снова ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ этой ошибкС.
Π― ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ:
[ИНЀОРМАЦИЯ] Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ {0} runtime.ec2944dd8b20ec099bf3.js (врСмя выполнСния) 1,41 ΠšΠ‘ [запись] [ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ]
[ΠžΠ¨Π˜Π‘ΠšΠ] Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ поддСрТиваСтся Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½ΠΎ «É¡makeDecoratorΒ» Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ Π² Β«InjectableΒ»
[ИНЀОРМАЦИЯ] Ρ‡Π°Π½ΠΊ {1} main.9868d9b237c3a48c54da.js (основной) 128 Π±Π°ΠΉΡ‚ [Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ] [ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ]
[ΠžΠ¨Π˜Π‘ΠšΠ] Β«InjectableΒ» Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ «É¡makeDecoratorΒ».

На самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΌΠ½Π΅ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ это ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ?

Π­Ρ‚ΠΎ вторая ΠΏΠΎ количСству ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π° послСдний Π³ΠΎΠ΄, ΡƒΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ отслСТивания Ivy. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с AOT, ΠΈ Π΅Π΅ статус - Π½Π΅Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ. МоТСм Π»ΠΈ ΠΌΡ‹ "needTriage" это?

Π”ΡƒΠΌΠ°ΡŽ, ΠΎΡ‚Π²Π΅Ρ‚ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ...
Π‘ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΏΠ»ΡŽΡ‰ β„’

Π”Π°Π²Π°ΠΉΡ‚Π΅ просто собСрСмся ΠΈ доТдСмся, ΠΊΠΎΠ³Π΄Π° появится ΠΏΠ»ΡŽΡ‰ πŸ€·πŸ»β€β™‚οΈ

Π― Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ» эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ измСнСниями ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‚ΠΊΠΎΠΉ 6.0.0-beta.7 ΠΈ 6.0.0-beta.8, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ воспроизвСдСния Алана ΠΏΠΎ адрСсу https://github.com/alan-agius4/angular-issue-23609

ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ

package.json Π² https://github.com/alan-agius4/angular-issue-23609, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π ΠΠ‘ΠžΠ’ΠΠ•Π’ Π±Π΅Π· ошибок компиляции

{
  "name": "angular-function-calls-decorators",
  "version": "1.0.0",
  "private": true,
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "ngc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@angular/core": "6.0.0-beta.7",
    "@angular/common": "6.0.0-beta.7",
    "@angular/compiler": "6.0.0-beta.7",
    "@angular/compiler-cli": "6.0.0-beta.7",
    "@angular/router": "6.0.0-beta.7",
    "rxjs": "^5.5.8",
    "zone.js": "^0.8.26"
  },
  "dependencies": {
    "typescript": "~2.6.2"
  }
}

ΠΈ package.json Π² https://github.com/alan-agius4/angular-issue-23609 , Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ошибка Β«Π’Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…Β».

{
  "name": "angular-function-calls-decorators",
  "version": "1.0.0",
  "private": true,
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "ngc",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@angular/core": "6.0.0-beta.8",
    "@angular/common": "6.0.0-beta.8",
    "@angular/compiler": "6.0.0-beta.8",
    "@angular/compiler-cli": "6.0.0-beta.8",
    "@angular/router": "6.0.0-beta.8",
    "rxjs": "^5.5.8",
    "zone.js": "^0.8.26"
  },
  "dependencies": {
    "typescript": "~2.7.2"
  }
}

Π² частности, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ фиксация 6ef9f2278f64697920df8ecaf79293a7eef7e0ab прСдставила ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π½ΠΎ это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ.

@mgechev Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° закрываСтся ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с компилятором. Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этого срСдства, Π² ΠΊΠ°ΠΊΠΎΠΌ выпускС? Π­Ρ‚ΠΎ появилось послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ я пСрСнСс всС прилоТСния, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π° послСднюю Π²Π΅Ρ€ΡΠΈΡŽ angular 7. РаньшС всС Π±Ρ‹Π»ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ! Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΌΠ½Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚Π΅!

@ rahulsahay19 см. ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ для ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΡƒΠ³Π»ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

@NgModule({
  imports: [
    CommonModule,
    RouterModule
  ],
  exports: [
    RouterModule,
    DcPage,
    DcPageFooter,
    DcPageNavbar,
    DcPageSidebarDirective,
    DcPageSidebarElement
  ],
  declarations: [
    DcPage,
    DcPageFooter,
    DcPageNavbar,
    DcPageSidebarDirective,
    DcPageSidebarElement
  ],
  providers: []
})
export class DcPageModule {
  static forRoot(pageService: any): ModuleWithProviders {
    return {
      ngModule: DcPageModule,
      providers: [
        {provide: 'pageService', useClass: pageService}
      ]
    };
  }
}

ВСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ , Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ DcPageModule.

@NgModule({
  imports: [
    BrowserModule,
    CommonModule,
    FormsModule,
    ContractsRoutingModule,
    DcPageModule.forRoot(PageService),
    ... other stuff ...
   ],
  declarations: [
    ...
  ],
  providers: [
    ...
  ]
})
export class ContractsModule {}

Π•ΡΡ‚ΡŒ Π»ΠΈ Ρƒ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ?

@mgechev Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ всС ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ. Но Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! Π― Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° для вСрсий angular 6, Π½ΠΎ с angular 6 Ρƒ мСня всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠΎΠ½ Π½Π°Ρ‡Π°Π» Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ с выпуском angular 7. НичСго Π½Π΅ измСнилось с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π°, просто миграция! И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ΠΎΡ€ для нас. Π˜Ρ‚Π°ΠΊ, Ссли ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ - СдинствСнный способ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ вСрсии angular 6!

@ rahulsahay19 чСстно? Π’Ρ‹ облаТались, это Π°Π΄ ΠΈ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚ :) ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π» Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ЕдинствСнноС, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», сработало, - это Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ forRoot ΠΈ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ваш ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, содСрТимоС ΠΊΠ°Ρ€Ρ‚Ρ‹ providers для forRoot . Но ваш ΠΏΡ€ΠΎΠ±Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ :)

@victornoel Π² ΠΌΠΎΠ΅ΠΌ случаС, Ρƒ мСня Π½Π΅Ρ‚ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. это Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния. ΠΈ ΠΌΠΎΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ Π³Π»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. МСня бСспокоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ наш ΠΊΠΎΠ΄ для ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ, Ссли это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысла. И Π½Π° самом Π΄Π΅Π»Π΅, ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ngc, довольно расплывчатая, Π½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСйчас Π΄ΡƒΠΌΠ°ΡŽ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии!

@ rahulsahay19 ошибка ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ идСальна, ΠΈ это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ; ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° вашС Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅. Если ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ 6 Π±ΡƒΠ΄Π΅Ρ‚ для вас самым простым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. ΠœΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ v6 ΠΈ v7.

@mgechev Бпасибо Π·Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ!

Для сообщСния ΠΎΠ± ошибкС

Ошибка ΠΏΡ€ΠΈ компиляции шаблона ... Π’Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°Ρ…, Π½ΠΎ 'Ι΅makeDecorator' Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ Π² 'NgModule'

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² вашСй сборкС AOT установлСна β€‹β€‹Ρ‚ΠΎΠ»ΡŒΠΊΠΎ _one_ вСрсия @ angular / core. Π”ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π° Π½Π΅ нСсколько ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ:
find .|grep modules/@angular/core/package.json

Π£ мСня Π±Ρ‹Π»Π° ошибка, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ lerna использовал 7.2.4, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ - 7.2.5.

Как слСдуСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· контСкста прилоТСния для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ? Π― ΠΏΡ€ΠΎΠ±ΡƒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π² angular / angular-cli # 9358 (ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ) , Π½ΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Мой сцСнарий выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

> ng --version
Angular CLI: 6.1.4
Node: 10.4.1
OS: win32 x64
Angular: 6.1.4
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.7.4
@angular-devkit/build-angular      0.7.4
@angular-devkit/build-ng-packagr   0.7.5
@angular-devkit/build-optimizer    0.7.4
@angular-devkit/build-webpack      0.7.4
@angular-devkit/core               0.7.4
@angular-devkit/schematics         0.7.4
@angular/cdk                       6.4.6
@angular/flex-layout               6.0.0-beta.17
@angular/material                  6.4.6
@ngtools/json-schema               1.1.0
@ngtools/webpack                   6.1.4
@schematics/angular                0.7.4
@schematics/update                 0.7.4
ng-packagr                         3.0.6
rxjs                               6.2.2
typescript                         2.7.2
webpack                            4.9.2

Мой код:

import { NgModule, ModuleWithProviders, InjectionToken } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AppSettingsService } from './services/app-settings.service';

export const AppSettingsObject = new InjectionToken('AppSettingsObject');

export function createAppSettingsService(settings) {
  return new AppSettingsService(settings);
}

@NgModule({
  imports: [
    CommonModule
  ]
})
export class AppSettingsModule {
  static forRoot(config: Object): ModuleWithProviders {
    return {
      ngModule: AppSettingsModule,
      providers: [
        { provide: AppSettingsObject, useValue: config },
        {
          provide: AppSettingsService,
          useFactory: (createAppSettingsService),
          deps: [AppSettingsObject]
        }
      ]
    };
  }
}

Ошибка:

> ng build my-app --prod

Date: 2018-08-29T
Hash: saghsh4ty463f34r4fef
Time: 8585ms
chunk {0} runtime.xxx.js (runtime) 1.05 kB [entry] [rendered]
chunk {1} styles.xxx.css (styles) 102 kB [initial] [rendered]
chunk {2} polyfills.xxx.js (polyfills) 130 bytes [initial] [rendered]
chunk {3} main.xxx.js (main) 128 bytes [initial] [rendered]

ERROR in Error during template compile of 'MyAppModule'
  Function calls are not supported in decorators but 'AppSettingsModule' was called.

Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ?

Π’Ρ‹ это исправили?

Π£ мСня Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с этим, ΠΈ я Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅. Он ΡƒΠ±ΠΈΠ» Ρ†Π΅Π»Ρ‹ΠΉ дСнь (спасибо Π·Π° это ...), Π½ΠΎ, ΠΏΠΎΡ…ΠΎΠΆΠ΅, я обошСл Π΅Π³ΠΎ.

(Для записи, Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ количСство ΠΏΠΎΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠΉ Π²ΠΎΠΊΡ€ΡƒΠ³ angularCompilerOptions ΠΈΠ»ΠΈ экспортированных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚. Π”. НС ΠΈΠΌΠ΅Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта).

Моя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ, Π½Π° основС Π΄Π°Π½Π½Ρ‹Ρ… срСды, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ· прилоТСния Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. ΠœΠΎΠ΄ΡƒΠ»ΡŒ с ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, поэтому Π΄Π°Π½Π½Ρ‹Π΅ срСды Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всСгда ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ app.module выполняСт ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ срСды ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ).

Π― Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ forRoot, ΠΈ я Ρ‚ΠΎΠΆΠ΅ (ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ класс, содСрТащий Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ forRoot, НЕ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅ΠΊΠΎ ngModule (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽ Ρ‚ΠΎΡ‚ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ forRoot, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡŒΡ‚Π΅, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π΅Ρ‚, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΈΠ· ΠΌΠΎΠΈΡ… ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… Π΄Π½Π΅ΠΉ "Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π΅Π· TS", ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ всСх Π½Π°Π²ΠΎΡ€ΠΎΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π΅ΠΊΠΎ):

static forRoot ( environment ): ModuleWithProviders {
     <strong i="9">@NgModule</strong> ( {
        imports: [ environment.production ? ThisModule : ThatModule ],
        providers: [ Provider1, Provider2 ]
      } )
     class ConfiguredMod {}
     return { ngModule: ConfiguredMod }
}

Π Π°Π±ΠΎΡ‚Π°Π» ΠΊΠ°ΠΊ ΡˆΠ°Ρ€ΠΌ ... ΠΏΠΎΠΊΠ° --prod. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ всС Π²ΠΈΠ΄ΠΈΠΌ здСсь ΡƒΠΆΠ°ΡΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² всС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ вСсь Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Angular Compiler), я ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» это, ΠΈ это сработало. НСприятно, Π½ΠΎ критичСски Π²Π°ΠΆΠ½ΠΎ, ΠΎΡ‚ этого зависит большая Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΅ΠΉ стратСгии "супСр-ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΎ Ρ€Π΅ΠΏΠΎ".

Π’ Ρ„Π°ΠΉΠ»Π΅ модуля:

    <strong i="15">@NgModule</strong> ( {
        imports: [ THISModule ],
        providers: [ Provider1, Provider2 ]
      } )
     export class ConfiguredTHISMod {}

    <strong i="16">@NgModule</strong> ( {
        imports: [ THATModule ],
        providers: [ Provider1, Provider2 ]
      } )
     export class ConfiguredTHATMod {}
    ....
    static forRoot ( environment ) {
        return { ngModule: ( environment.production ? ConfiguredTHISMod : ConfiguredTHATMod ) };
    }

Если Π±Ρ‹ я сдСлал это:

    static forRoot ( environment ) {
        const mod = environment.production ? ConfiguredTHISMod : ConfiguredTHATMod;
        return { ngModule: mod };
    }

Или любой способ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ этого входящСго ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° срСды, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    static forRoot ( environment ) {
        environment = ( environment && 'production' in environment ? environment : { production : false } );
       return { ngModule: ( environment.production ? ConfiguredTHISMod : ConfiguredTHATMod ) };
    }

Он снова сломался.

Π£ мСня Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ подозрСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π΅Ρ‚ смысл, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я Ρ‡ΠΈΡ‚Π°Π» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ компилятора, ΠΈ хотя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π½Π΅ дСлаСтся, я ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π²ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° срСды ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ эффСкт, Π½ΠΎ я Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС я Π±ΡƒΠ΄Ρƒ Π΄Π΅Π»Π°Ρ‚ΡŒ обоснованныС прСдполоТСния, поэтому я ΠΎΡ‚ΠΊΠ°ΠΆΡƒΡΡŒ ΠΎΡ‚ обоснования. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я просто счастлив, Ρ‡Ρ‚ΠΎ понял это Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ свСрхурочно.

НадСюсь, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ‚Π°ΠΌ.

Π­Ρ‚ΠΎ всС Π΅Ρ‰Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ Π² Angular 5.2.11 ... Π΅ΡΡ‚ΡŒ новости ΠΏΠΎ этому ΠΏΠΎΠ²ΠΎΠ΄Ρƒ?
@ alan-agius4
Π£ этой ошибки Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚?

ВСроятно, ΠΎΠ½ΠΈ Π½Π΅ исправят это, ΠΏΠΎΠΊΠ° Ivy Π½Π΅ станСт ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Angular 9). По ΠΈΡ… ΠΎΡ†Π΅Π½ΠΊΠ°ΠΌ, Π½Π΅ ΠΆΠ΄ΠΈΡ‚Π΅ исправлСния Π΄ΠΎ 2020 Π³ΠΎΠ΄Π° πŸ™ƒ

Π― ΡƒΠ²ΠΈΠ΄Π΅Π» ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ интСрСсноС Π² этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

ΠŸΠ°ΠΊΠ΅Ρ‚ Nebular / auth ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ forRoot, ΠΈ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Как ΠΎΠ½ΠΈ это сдСлали? Π― создал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ· этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Ρƒ мСня ошибка ... НС понимаю, Ρ‡Ρ‚ΠΎ я пропустил.

НСбулярный / Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ git:
https://github.com/akveo/nebular/blob/master/src/framework/auth/auth.module.ts

Π•ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для этого ΠΏΠ°ΠΊΠ΅Ρ‚Π°?

@ stoto34 ... ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ экспортируСмыС Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ. Π“Π΄Π΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ Ρ‚ΠΎΠ³ΠΎ?

@ mlc-mlapis ΠŸΡ€ΠΈ использовании ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΌΠΎΠ΅Π³ΠΎ app.module (я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ nebular auth для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ oauth2):

https://stackoverflow.com/questions/55125982/aot-build-error-function-calls-are-not-supported-in-decorators

@ stoto34 ... Π² этом Ρ€Π°Π·Π½ΠΈΡ†Π° environment.BASE_URI + environment.ENDPOINT_CONFIGS.ADMIN ΠΈ environment.BASE_URI + environment.ENDPOINT_CONFIGS.GRAPHQL .

@ mlc-mlapis МнС ΠΎΡ‡Π΅Π½ΡŒ Таль, Π½ΠΎ я Π½Π΅ понимаю вашСго ΠΎΡ‚Π²Π΅Ρ‚Π°. Π­Ρ‚ΠΎ просто значСния срСды, ΠΏΠΎΡ‡Π΅ΠΌΡƒ сборка aot ΠΈΠ·-Π·Π° этого сломаСтся?

Ѐункция NbOAuth2AuthStrategy.setup Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ app.module

@ stoto34 ... ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ environment.BASE_URI + environment.ENDPOINT_CONFIGS.ADMIN - это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ... ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ... Π° компилятор AOT Π½Π΅ запускаСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чистого ΠΊΠΎΠ΄Π°.

@ mlc-mlapis Π― Π·Π°ΠΌΠ΅Π½ΠΈΠ» Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ строкой Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. По-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, сборка aot Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ с Ρ‚Π΅ΠΌ ΠΆΠ΅ сообщСниСм ΠΎΠ± ошибкС. Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΡ€Π°Π²Ρ‹ насчСт самовыраТСния ΠΈ построСния.

@ stoto34 ... Π°Ρ…, Π° Ρ‡Ρ‚ΠΎ это ... ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

provide: NB_AUTH_TOKEN_INTERCEPTOR_FILTER, useValue: function (req: HttpRequest<any>) {...}

Бпасибо @dherges. Π― снова столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅ для сСбя Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄. Π― внСс Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния (Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅) Π² структуру ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ эта ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° снова, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ AgGridModule, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ функция для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° модуля. Π― смог Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, просто Π΄ΠΎΠ±Π°Π²ΠΈΠ² ...

    "angularCompilerOptions": {
        "fullTemplateTypeCheck": true
    }

... Π² ΠΌΠΎΠΉ Ρ„Π°ΠΉΠ» tsconfig.json. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для этого Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка ...

Note: It is recommended to set this to true because this option will default to true in the future.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ этим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ ΠΎΠ½ навсСгда ΠΏΠΎΡ…ΠΎΡ€ΠΎΠ½Π΅Π½. :)

Π˜Ρ‚Π°ΠΊ, я пошСл ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ свои измСнСния ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, которая Ρƒ мСня Π΅ΡΡ‚ΡŒ, ΠΈ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½ΠΎΠ΅ ΠΈ Β«ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚Β», ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΈ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ измСнСния Π² ΠΌΠΎΠ΅ΠΉ настройкС, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅, стали вСсти сСбя ΠΈΠ½Π°Ρ‡Π΅. МоС Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅, Π² основном Π±Ρ‹Π»ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ» tsconfig.json для построСния ΠΈ обслуТивания. Π˜Ρ‚Π°ΠΊ, для сборки я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² сборку --ts--config <tsconfig.json> . Π’Π΅ΠΏΠ΅Ρ€ΡŒ я столкнулся с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ошибкой Π² ​​этой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π΅Π΅, Ρ‡Ρ‚ΠΎ ...

ng build

ΠΈ

ng build --ts-config tsconfig.json

Π΄Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹! Какая? Π― ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽ Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ» json ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ мою ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π§Ρ‚ΠΎ, Ρ‡Π΅Ρ€Ρ‚ возьми, с этим происходит?

Для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° с использованиСм Ρ„Π°ΠΉΠ»Π° tsconfig.json ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ Π½Π΅ ΡƒΠ΄Π°Π²Π°Π»Π°ΡΡŒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Ρ„Π°ΠΉΠ»Π° json Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΌΠ½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ настройки для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ΅ΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ...

    "angularCompilerOptions": {
        "skipTemplateCodegen": true,
        "strictMetadataEmit": true,
        "fullTemplateTypeCheck": true
    }

... поТалуйста, Π½Π΅ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ знаю ΠΏΠΎΡ‡Π΅ΠΌΡƒ. :) Ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ», Ссли Π±Ρ‹ я Π½Π΅ установил ΠΈΡ…, Π±Ρ‹Π»Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π½ΠΎ Π±Ρ‹Π»Π° этой .

fullTemplateTypeCheck: Cannot read property 'type' of null

@crowmagnumb Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ - это Π½Π΅ ΠΊΠΎΡ€Π΅Π½ΡŒ tsconfig.json , Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ lib/tsconfig.lib.json

Π­Ρ‚ΠΎ выглядит Ρ‚Π°ΠΊ: https://github.com/angular/angular-cli/blob/a13924364482cbf9a61ba4c3ac1171d3feaf8034/tests/angular_devkit/build_ng_packagr/ng-packaged/projects/lib/tsconfig.lib.json

{
  "extends": "./tsconfig.dist.json",
  "compilerOptions": {
   // ...
  },
  "angularCompilerOptions": {
    "annotateForClosureCompiler": true,
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true,
    "enableResourceInlining": true
  },

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии angular ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ компилятор angular, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ.

enable-angular-compiler-annotation.5.2.9.patch
enable-angular-compiler-annotation.5.2.10.patch
enable-angular-compiler-annotation.6.0.1.patch
enable-angular-compiler-annotation.6.0.2.patch
enable-angular-compiler-annotation.6.1.10.patch
enable-angular-compiler-annotation.7.1.0.patch

Ρ„Π°ΠΉΠ» ΠΏΠ°Ρ‚Ρ‡Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠΉ

Index: node_modules/@angular/compiler/bundles/compiler.umd.js
IDEA additional info:
<+>UTF-8
===================================================================
--- node_modules/@angular/compiler/bundles/compiler.umd.js  (date 1543397797000)
+++ node_modules/@angular/compiler/bundles/compiler.umd.js  (date 1543398810000)
@@ -24526,6 +24526,14 @@
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), createSelf);
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), createSkipSelf);
             this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), createOptional);
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyParam'), makeMetadataFactory('TPProxyParam'));
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyRequestBody'), makeMetadataFactory('TPProxyRequestBody'));
+            this._registerDecoratorOrConstructor(this.findDeclaration('@pkg/transform-proxy', 'TPProxyRequest'), makeMetadataFactory('TPProxyRequest'));
         };
...
...
...

sh.exec( patch -p0 -i tools / cli-patches / version / enable-angular-compiler-annotation. $ {Version} .patch );

@LinBoLen ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡˆΡŒ ΠΏΠΈΠ°Ρ€, Ρ‚ΠΎΠ³Π΄Π°

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΌΠ° сборки.
ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, слСдуСт ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ оптимистичный Π±Π΅Π»Ρ‹ΠΉ список сборки (список Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ) для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² компилятора angular?

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΌΠ½Π΅

import { someCoreModule } from '@myPackage/core';

export const someCoreModuleforRoot = someCoreModule.forRoot(); // Without "export" build will crash

@NgModule({
    imports: [
        someCoreModuleforRoot
    ]
})
export class MyModule {
}
"ng-packagr": "4.2.0"
"@angular/cli": "7.3.8"

Π― Ρ‡Π΅Ρ€ΠΏΠ°Π» Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΠ² Π²Ρ‹ΡˆΠ΅, ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ сборка AOT ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² fullTemplateTypeCheck. https://github.com/Saad-Amjad/session-manager И Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° ΠΊΠΎΠ΄Π° здСсь: https://medium.com/monstar-lab-bangladesh-engineering/making-configurable-angular-feature-modules-using-strategy -pattern-b8f43340550a

МнС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ экспортировав фактичСский Ρ„Π°ΠΉΠ» Π² public_api.ts

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

Π€Π°ΠΉΠ» ~ / lib / index.ts
export * from './sample/data.component';

Π€Π°ΠΉΠ» ~ / public_api.ts
export * from './lib';

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ng build --prod --aot=false , Π½ΠΎ Π½Π΅ Π΄ΠΎ ng build --prod ...

ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ:
Π€Π°ΠΉΠ» ~ / public_api.ts
export * from '.lib/sample/data.component;'

Здравствуй,

Π£ мСня Π±Ρ‹Π»Π° такая ΠΆΠ΅ ошибка, ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ... ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π» ΠΌΠΎΠ΄ΡƒΠ»ΡŒ со статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ forRoot . Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ я устанавливал частноС статичСскоС ΠΏΠΎΠ»Π΅ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ forRoot Π±Ρ‹Π» Π²Ρ‹Π·Π²Π°Π½ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ модуля.
Π’ΠΎ всяком случаС, это статичСскоС ΠΏΠΎΠ»Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ошибки, я ΡƒΠ΄Π°Π»ΠΈΠ» Π΅Π³ΠΎ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

@ apascual-pl

Π― Ρ€Π°Π±ΠΎΡ‚Π°Π» послС исправлСния измСнСния ΠΌΠΎΠ΅Π³ΠΎ public_api

Но я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ссли я сдСлаю экспорт ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, сСрвис Π² public_api Π±ΡƒΠ΄Π΅Ρ‚ грязным

Как Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?

--aot=false vs export all of module in the public_api

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ , Ρ‡Ρ‚ΠΎ АОВ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… export заявлСния Π² public_api.ts Ρ„Π°ΠΉΠ»Π° нСбольшой Ρ†Π΅Π½Ρƒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½Π΅ Π²Π΅Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΈ слуТбу Π² Ρ„Π°ΠΉΠ» public_api.ts .

Π― ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽ свой ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² Β«ΠΏΠ°ΠΏΠΊΠΈ-ΠΌΠΎΠ΄ΡƒΠ»ΠΈΒ», каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Angular ΠΈ связанныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, слуТбы ΠΈ Ρ‚. Π”. КаТдая ΠΏΠ°ΠΏΠΊΠ° модуля ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» index.ts ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ экспортируСт всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, слуТбы ΠΈ Ρ‚. эту ΠΏΠ°ΠΏΠΊΡƒ.

Π€Π°ΠΉΠ» public_api.ts ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° экспорта для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ модуля. Π§Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

// public_api.ts

// Export from the Dialog module-folder
export * from './my-dialog-module/';                  // Export all components, services, etc.
export * from './my-dialog-module/my-dialog.module';  // Export the Angular module

// Export from the Auth module-folder
export * from './my-auth-module/';                    // Export all components, services, etc.
export * from './my-auth-module/my-auth.module';      // Export the Angular module

Π€Π°ΠΉΠ»Ρ‹ Barrel для экспорта «всСго» (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ с Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Β«ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ строки) Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρƒ мСня Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль Π² Π·Π΄Π°Π½ΠΈΠΈ AOT. Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ прСдупрСТдСния ΠΎ цикличСских ссылках ΠΈΠ»ΠΈ сбой сборки. Π― Π²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ люди Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°Π΄ ошибками сборки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ forwardRef ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ (Ρ‡Ρ‚ΠΎ Π½Π΅ устраняСт ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅), Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ я Π±Ρ‹ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ index.ts Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π² качСствС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. экспорт.

Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я Π²ΠΈΠ΄Π΅Π» это (Π° я Π²ΠΈΠ΄Π΅Π» это довольно часто, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ ΠΏΠΎΡ€ΡƒΡ‡Π°ΡŽΡ‚ Ρ€Π΅ΠΈΠ½ΠΆΠΈΠ½ΠΈΡ€ΠΈΠ½Π³ старого прилоТСния ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²ΠΈΠ΄Π°, ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, Π³Π΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΌΡƒΠ΄Ρ€ΠΎΡΡ‚ΡŒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ² ствола), я Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡ…, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π² Ρ„Π°ΠΉΠ»Ρ‹ индСкса Π² Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² любой «вСсь» ΠΈΠΌΠΏΠΎΡ€Ρ‚ для ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… рСсурсов.

НапримСр, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„Π°ΠΉΠ» my-dialog-module, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ экспортируСт рСсурсы. Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ API [exports], Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρƒ мСня Π΅ΡΡ‚ΡŒ пСрСчислСниС ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным) Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ (экспорт * ΠΈΠ· my.enum.ts).

Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ удобство баррСля Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±Π΅Π΄ΠΎΠ»Π°Π³Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наткнСтся Π½Π° эту Π΄ΠΎ смСшного Π΄Π»ΠΈΠ½Π½ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ историчСски ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции. НадСюсь, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ этот ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΈ ΠΎΠ½ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

Моя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ forRoot() для прСдоставлСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° компилируСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Angular, скомпилированным с вСрсиСй 8.2 ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅, Π½ΠΎ эта ошибка появляСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я Π½Π°Ρ‡Π°Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 8.3 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ для компиляции прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

Π’ частности, ошибка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

ERROR in Error during template compile of 'MainModule'
  Function calls are not supported in decorators but 'LoggerModule' was called.
Unexpected value 'undefined' imported by the module 'MainModule in src/app/main/main.module.ts'
Error during template compile of 'MainModule'
  Function calls are not supported in decorators but 'LoggerModule' was called.

MainModule находится Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π° LoggerModule находится Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Ρ‹Π»Π° скомпилирована с вСрсиСй 8.0 ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с прилоТСниями Π΄ΠΎ вСрсии 8.2, Π½ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с вСрсиСй 8.3 ΠΈ Π²Ρ‹ΡˆΠ΅.

Π’ΠΎΡ‚ шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ, Ссли это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ с Π²Π°ΠΌΠΈ:

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π² вашСм tsconfig.lib.json Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅

  "angularCompilerOptions": {
    "annotateForClosureCompiler": true,
    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true,
    "strictInjectionParameters": true,
    "enableResourceInlining": true
  },

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для NgModule , Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ статичСская функция , Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • Ρƒ вас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исходного ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ModuleWithProviders .
  • Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρ€Π΅Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ providers
  • Π»ΡŽΠ±Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π»ΡŽΠ±Ρ‹Ρ… providers Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ export Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² вашСм public_api
  • МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ // @dynamic Π½Π°Π΄ ΠΌΠΎΠΈΠΌ @NgModule()
  • Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ исходный ΠΊΠΎΠ΄ для динамичСского создания массива providers
  • НС Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π½ΠΎ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ModuleWithProviders<LoggerModule>

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹Π΅ ограничСния услоТняли ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΎΡΡ‚Π°Π²Π°ΡΡΡŒ совмСстимым со всСми, ΠΊΡ‚ΠΎ использовал Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

Π’ΠΎΡ‚ Ρ‡Π΅ΠΌ Π² ΠΈΡ‚ΠΎΠ³Π΅ оказался LoggerModule , ΠΈ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для мСня:

export const LOGGER_OPTIONS: InjectionToken<LoggerConfig> = new InjectionToken<LoggerConfig>('LOGGER_OPTIONS');

export function LogServiceFactory(
    levels: LOGGER_LEVEL,
    console: ConsoleMethods<void>,
    prefixService: PrefixService,
    loggerConfig: LoggerConfig
) {
    return loggerConfig && loggerConfig.enabled
        ? new LogConsoleService(levels, console, prefixService)
        : new LogNoopService();
}

// <strong i="8">@dynamic</strong>
@NgModule({})
export class LoggerModule {
    public static forRoot(loggerConfig?: LoggerConfig): ModuleWithProviders<LoggerModule> {
        return {
            ngModule: LoggerModule,
            providers: [
                {provide: LOGGER_LEVELS, useValue: loggerConfig.levels || LOGGER_ALL},
                {provide: LOGGER_TAILS, useValue: loggerConfig.tails || LOGGER_TAILS_DEFAULT},
                {provide: LOGGER_CONSOLE, useValue: loggerConfig.console || console},
                {provide: LOGGER_OPTIONS, useValue: loggerConfig || {}},
                {
                    provide: LogService,
                    useFactory: LogServiceFactory,
                    deps: [LOGGER_LEVELS, LOGGER_CONSOLE, PrefixService, LOGGER_OPTIONS]
                }
            ]
        };
    }
}

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ forRoot() - это просто функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ модуля, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° Π½Π΅Ρ‚. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ заставило мСня ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°Π±Ρ€ΠΈΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ loggerConfig Π² Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π’ качСствС сравнСния Π½ΠΈΠΆΠ΅ я Ρ‚Π°ΠΊΠΆΠ΅ расскаТу ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» сломан исходный исходный ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, насколько сильно отличаСтся исправлСниС ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°. Π’ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ мСня это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, само ΠΏΠΎ сСбС Ρ‡ΡƒΠ΄ΠΎ.

@NgModule()
export class LoggerModule {
    public static forRoot(options?: LoggerConfig): ModuleWithProviders {
        options = Object.assign({
            enabled: true,
            levels: LOGGER_ALL,
            tails: LOGGER_TAILS_DEFAULT,
            console: console
        } as LoggerConfig, options || {});

        const providers: Provider[] = [
            {provide: LOGGER_LEVELS, useValue: options.levels},
            {provide: LOGGER_TAILS, useValue: options.tails},
            {provide: LOGGER_CONSOLE, useValue: options.console}
        ];

        if (options && options.enabled) {
            providers.push({provide: LogService, useClass: LogConsoleService});
        } else {
            providers.push({provide: LogService, useClass: LogNoopService});
        }

        return {ngModule: LoggerModule, providers};
    }
}

Для мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора ΠΌΠΎΠ΅Π³ΠΎ модуля lib:

// app-injector.ts

import { Injector } from '@angular/core';

export let AppInjector: Injector;

export function setAppInjector(injector: Injector) {
  AppInjector = injector;
}
// lib.module.ts

import { Injector, ... } from '@angular/core';
import { setAppInjector } from './app-injector';
...
@NgModule()
export class LibModule {
  constructor(injector: Injector) {
    setAppInjector(injector);
  }
}

Π― Π½Π΅ ΠΌΠΎΠ³ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ, Π½ΠΎ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ измСнСниями я смог ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

// app-injector.ts

import { Injector } from '@angular/core';

// <strong i="11">@dynamic</strong>
export class AppInjector {

  private static injector: Injector;

  static setInjector(injector: Injector) {
    AppInjector.injector = injector;
  }
}
// lib.module.ts

import { Injector, ... } from '@angular/core';
import { AppInjector } from './app-injector';
...
@NgModule()
export class LibModule {
  constructor(injector: Injector) {
    AppInjector.setInjector(injector);
  }
}

Π― Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ столкнулся с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ обновлСния Π΄ΠΎ Angular 9. Π”Π°ΠΆΠ΅ послС выполнСния всСх дСйствий, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ…

ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ivy Π² ΠΌΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ tsconfig.lib.json ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡƒΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

"angularCompilerOptions": {
        "skipTemplateCodegen": true,
        "strictMetadataEmit": true,
        "fullTemplateTypeCheck": true,
        "strictInjectionParameters": true,
        "enableResourceInlining": true,
        "enableIvy": false
},

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»ΡŽΡ‰ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅

``
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": ΠΏΡ€Π°Π²Π΄Π°,
"fullTemplateTypeCheck": ΠΏΡ€Π°Π²Π΄Π°,
"enableResourceInlining": ΠΏΡ€Π°Π²Π΄Π°,
"enableIvy": лоТь
}

"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": ΠΏΡ€Π°Π²Π΄Π°,
"enableResourceInlining": ΠΏΡ€Π°Π²Π΄Π°,
"enableIvy": ΠΏΡ€Π°Π²Π΄Π°
}
``

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ исправлСнная Айви . Айви ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»ΠΈΠ»Π°ΡΡŒ.
ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½Π°?

Π― Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» свой Π°Π½Π°Π»ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π΅Ρ‰Π΅ Π² 2018 Π³ΠΎΠ΄Ρƒ Π² PR ng-packagr . Π‘ Ivy большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, поэтому Π² Angular 9.0 с Ivy это большС Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π£ΠΎΡ€Π΄Π°: @wardbell

Π‘Π±ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ / Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ angularCompilerOptions . Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² этом воспроизвСдСнии

Π”ΠΎΠ±Π΅ΠΉΡ‚Π΅ΡΡŒ успСха

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    "fullTemplateTypeCheck": true
    "skipTemplateCodegen": false,
    "strictMetadataEmit": false
    "skipTemplateCodegen": false,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)

Π‘Π±ΠΎΠΈ сборки

    "skipTemplateCodegen": true,
    "strictMetadataEmit": true,
    // fullTemplateTypeCheck omitted (= default value)
    "skipTemplateCodegen": true,
    "strictMetadataEmit": false
    // fullTemplateTypeCheck omitted (= default value)

НаблюдСниС

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π£ΠΎΡ€Π΄Π° установка "skipTemplateCodegen": true Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ "fullTemplateTypeCheck": true Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ для получСния ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки ΠΎΡ‚ ngc.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ / Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мысли

По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΠΏΡ‹Ρ‚Ρƒ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° сводится ΠΊ «всСму, Ρ‡Ρ‚ΠΎ статичСски анализируСтся для AoTΒ» (см. Β«ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ статичСских Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉΒ» Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ компилятора ). Imo, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ strictMetadataEmit ΠΈΠ»ΠΈ ΠΌΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ уТасно Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ πŸ˜†

По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² static forRoot(): ModuleWithProviders , ΠΈΠ½ΠΎΠ³Π΄Π° Π² зависимости ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°, которая становится ΠΈΠ»ΠΈ Π½Π΅ становится «статичСски Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉΒ». ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρƒ мСня Π½Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΡ€ΠΎ, ΠΈ я Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Ρ…ΠΎΡ‡Ρƒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прСдполоТСния ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… смутных воспоминаниях ΠΎ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²ΠΈΠ΄Π΅Π» Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ / Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ngc ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС?

_ Π§Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Ссли ngc распСчатаСт Π½ΠΎΠΌΠ΅Ρ€ строки Π² исходном ΠΊΠΎΠ΄Π΅, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. _

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ слуТбу ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ для динамичСского извлСчСния ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ... Π½ΠΎ закончился ошибкой Π½ΠΈΠΆΠ΅ (Π²Ρ‚ΠΎΡ€ΠΎΠΉ снимок экрана) ... Π― Ρ‚ΠΎΠΆΠ΅ попытался ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ
image

Π­Ρ‚ΠΎ моя настоящая ошибка
image

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ng build - prod соотвСтствуСт AOT, Π½Π΅ рСкомСндуСтся Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ слуТбы Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°Ρ…?

Π­Ρ‚ΠΎ сводит мСня с ΡƒΠΌΠ°. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ строка ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ содСрТит Ρ‚Π°ΠΊΠΎΠΉ ошибки? А ΠΊΠ°ΠΊ этому выпуску 2 Π³ΠΎΠ΄Π°? Π― ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽ Π±Π΅Π·ΡƒΠΌΠ½Ρ‹Π΅ Ρ‚Π°Π±Π»Π΅Ρ‚ΠΊΠΈ?

@ jpike88, это СдинствСнныС шаги, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρƒ мСня сработали. НадСюсь, это сработаСт ΠΈ для вас https://github.com/angular/angular/issues/23609#issuecomment -561615821

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @ jpike88 , всСм.

Π­Ρ‚ΠΎ сводит мСня с ΡƒΠΌΠ°. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ строка ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ содСрТит Ρ‚Π°ΠΊΠΎΠΉ ошибки?

Π― согласСн, это Π±Π΅Π·ΡƒΠΌΠΈΠ΅, Ρ‡Ρ‚ΠΎ для ошибки Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ контСкст строки / столбца. К соТалСнию, это нСпростоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° носит Π±ΠΎΠ»Π΅Π΅ систСмный Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€, Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² сообщСниС ΠΎΠ± ошибкС.

ngc (Π² частности, компилятор View Engine) Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ с извлСчСния Β«ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…Β» ΠΈΠ· исходного ΠΊΠΎΠ΄Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» .ts становится ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ структурой JSON. ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ компилятора Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с этими ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½Π°Ρ информация (Π½ΠΎΠΌΠ΅Ρ€Π° строк / столбцов) фиксируСтся для _ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…_ структур, Π½ΠΎ Π½Π΅ для всСх, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ снизит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ компилятора.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, выполняСмая strictMetadataEmit выполняСтся Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ этих ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ отобраТСния контСкста строки / столбца ошибки зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ошибки ΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π·Π°Ρ…Π²Π°Ρ‚ΠΈΠ»ΠΈ Π»ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π­Ρ‚ΠΈ Π΄Π²Π΅ систСмы ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹, поэтому Π½Π΅ всСгда гарантируСтся, Ρ‡Ρ‚ΠΎ контСкстная информация Π±ΡƒΠ΄Π΅Ρ‚ доступна.

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ нСбольшиС ошибки качСства ΠΆΠΈΠ·Π½ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ этой, Π½Π΅ ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π·Π° послСдниС ΠΏΠ°Ρ€Ρƒ Π»Π΅Ρ‚. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ всС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΌΡ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠ»ΠΈΡΡŒ Π½Π° Π·Π°ΠΌΠ΅Π½Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†Π΅Π»ΠΎΠΌ Π½Π° систСму, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ivy _ нСвСроятно_ Ρ…ΠΎΡ€ΠΎΡˆ Π² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ошибок ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΠΌ объяснСнии Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π±Ρ‹Π»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ Π΅Π³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ дня.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нашС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ - Айви Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ сдСлаСт Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ошибки ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ этой, Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. Π‘ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ситуация Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТняСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΎΠ½ΠΈ всС Π΅Ρ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ View Engine ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ дольшС Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ strictMetadataEmit , Π½ΠΎ, надСюсь, это измСнится Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅.

Π― исправил ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² https://github.com/angular/angular/issues/23609#issuecomment -561615821

  • Ρƒ вас Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ исходного ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ModuleWithProviders .

МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это

@NgModule({
    imports: [
        // [...]
    ]
})
export class CoreModule implements OnDestroy {

    private static showUserInfo = true;

    static forRoot(options: CoreOptions = {}): ModuleWithProviders<NextCoreModule> {
        // this line caused the error
        // NextCoreModule.showUserInfo = options.showUserInfo ?? true;

        return {
            ngModule: NextCoreModule,
            providers: [
                {
                    provide: APP_INITIALIZER,
                    useFactory: initialize,
                    deps: [
                        ConfigBuilderService, AppKeyService, TranslateService, Title, coreOptionsToken
                    ],
                    multi: true
                },
                { provide: coreOptionsToken, useValue: options || {} }
            ]
        };
    }

    // [...]
}

@kroeder Π’Ρ‹, сэр, сдСлали ΠΌΠΎΠΉ дСнь! Бпасибо!

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π»ΠΈ это? А ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит?

@JustDoItSascha

ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ # 36415 ΠΈ # 37126 для получСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор Angular Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ), Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ΄.

Π― исправил это, Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚ RouterModule.forChild(routes) Π½Π° Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ константу:
export const routerModule = RouterModule.forChild(routes);

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ