Ng-lazyload-image: ΠžΠ¨Π˜Π‘ΠšΠ Π² нСдопустимом поставщикС для LazyLoadImageHooks. useClass Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 3 июн. 2020  Β·  33ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: tjoskar/ng-lazyload-image

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Angular9

ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined.
           Usually it happens when:
           1. There's a circular dependency (might be caused by using index.ts (barrel) files).
           2. Class was used before it was declared. Use forwardRef in this case.

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

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это для компиляции, Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии:
npm install [email protected]
Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ionic 5.0.7 / Angular 8.2.14

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

Вакая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь

Ρƒ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ?

Ρƒ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° .... ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π½Π°ΠΌ

Π³ΠΌ ... Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠ°ΠΊ Π²Π΅Ρ€ΡΠΈΡŽ 7.1.0, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΈΡΠΏΡ€Π°Π²Π»ΡŽ.

ΠšΠ°ΠΊΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ng-lazyload-image Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² npm ls ng-lazyload-image ).

Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²ΠΎ врСмя сборки ΠΈΠ»ΠΈ Π² консоли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°?

МоТно Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСбольшоС Ρ€Π΅ΠΏΠΎ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ? Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Angular 9 Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ: https://github.com/tjoskar/ng-lazyload-image/blob/master/example/package.json, ΠΈ я Π½Π΅ Π²ΠΈΠΆΡƒ Ρ‚Π°ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹? И Π½Π΅ Π² этой пСсочницС ΠΊΠΎΠ΄Π°: https://codesandbox.io/s/lazy-load-image-with-httpclient-to538?file=/src/app/app.module.ts (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€).

@tjoskar эта ошибка

ΠžΠ¨Π˜Π‘ΠšΠ: Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поставщик для LazyLoadImageHooks. useClass Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈ:
1. БущСствуСт цикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° использованиСм Ρ„Π°ΠΉΠ»ΠΎΠ² index.ts (Π±ΠΎΡ‡ΠΊΠ°)).
2. Класс использовался Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» объявлСн. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ forwardRef.

ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: нСдопустимый поставщик для LazyLoadImageHooks. useClass Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΈ:
1. БущСствуСт цикличСская Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° использованиСм Ρ„Π°ΠΉΠ»ΠΎΠ² index.ts (Π±ΠΎΡ‡ΠΊΠ°)).
2. Класс использовался Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Ρ‹Π» объявлСн. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ forwardRef.

Π£ мСня эта ошибка ΠΏΡ€ΠΈ создании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ angular
с вСрсиСй 7 этого Π½Π΅ происходит

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ воспроизвСсти это. Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ создал Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ angular 9 (9.1.9):

❯ ng new my-app

❯ npm ls @angular/core
[email protected]
└── @angular/[email protected]

Π—Π°Ρ‚Π΅ΠΌ я внСс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/7fe50bd1631a20e7bcfed82f2a34acaeb6b50533

И запуститС npm run build ( ng build ) Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

МнС Π½ΡƒΠΆΠ½Π° ваша ΠΏΠΎΠΌΠΎΡ‰ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

  1. Π’Ρ‹ создаСтС свои собствСнныС ΠΊΡ€ΡŽΡ‡ΠΊΠΈ? Если Π΄Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ зависимости Π² Π²Π°ΡˆΠΈΡ… Ρ…ΡƒΠΊΠ°Ρ…?
  2. Π’Ρ‹ добавляСтС LazyLoadImageModule Π² нСсколько NgModule ?
  3. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ воспроизводитС эту ΠΎΡˆΠΈΠ±ΠΊΡƒ? Или, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ нСсколько Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠ΄Π° ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅.

ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эти спСцификации
https://angular.io/guide/creating-libraries
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² npm

@ emanuele-galeotti, я Π½Π΅ понимаю. ng-lazyload-image - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈ ΠΎΠ½Π° публикуСтся Π² npm. Π£ мСня создалось Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ использовали ng-lazyload-image Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, поэтому я попытался ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ( ng-lazyload-image ).

Π’Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ создаСтС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ng-lazyload-image Π² качСствС зависимости? Или Π²Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚Π΅ ΠΌΠ½Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, слСдуя руководству, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ, ΠΈ пСрСнСсти ΠΊΠΎΠ΄ Π²ΠΎ вновь ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ?

указанная Π²Ρ‹ΡˆΠ΅ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² ΠΌΠΎΠ΅ΠΌ случаС, ΠΊΠΎΠ³Π΄Π°:

  1. Π― создаю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для своСго UI
  2. ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ LazyLoadImageModule
  3. Π― дСлаю сборку, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽ Π½Π° npm

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΠ± этом?
Π Π΅ΠΏΠΎ Ρƒ мСня Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ частный.

Π‘Π±ΠΎΠΉ сборки ΠΏΡ€ΠΈ сборкС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ сборкС прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Π°ΡˆΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ?

Π― сдСлал сСйчас ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

❯ ng new my-workspace --create-application=false
CREATE my-workspace/README.md (1028 bytes)
CREATE my-workspace/.editorconfig (274 bytes)
CREATE my-workspace/.gitignore (631 bytes)
CREATE my-workspace/angular.json (136 bytes)
CREATE my-workspace/package.json (1196 bytes)
CREATE my-workspace/tsconfig.json (489 bytes)
CREATE my-workspace/tslint.json (2933 bytes)
βœ” Packages installed successfully.

❯ ng generate library my-lib
CREATE projects/my-lib/README.md (986 bytes)
CREATE projects/my-lib/karma.conf.js (1022 bytes)
CREATE projects/my-lib/ng-package.json (155 bytes)
CREATE projects/my-lib/package.json (184 bytes)
CREATE projects/my-lib/tsconfig.lib.json (435 bytes)
CREATE projects/my-lib/tsconfig.lib.prod.json (97 bytes)
CREATE projects/my-lib/tsconfig.spec.json (246 bytes)
CREATE projects/my-lib/tslint.json (247 bytes)
CREATE projects/my-lib/src/public-api.ts (155 bytes)
CREATE projects/my-lib/src/test.ts (781 bytes)
CREATE projects/my-lib/src/lib/my-lib.module.ts (222 bytes)
CREATE projects/my-lib/src/lib/my-lib.component.spec.ts (622 bytes)
CREATE projects/my-lib/src/lib/my-lib.component.ts (264 bytes)
CREATE projects/my-lib/src/lib/my-lib.service.spec.ts (353 bytes)
CREATE projects/my-lib/src/lib/my-lib.service.ts (134 bytes)
UPDATE angular.json (1383 bytes)
UPDATE package.json (1360 bytes)
UPDATE tsconfig.json (588 bytes)
βœ” Packages installed successfully.

❯ cd projects/my-lib
❯ npm install ng-lazyload-image -D
+ [email protected]
added 1 package from 1 contributor and audited 1 package in 1.034s
found 0 vulnerabilities

# I made the following changes: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/1bf60bcbf6133751c41f52cd3d837614dfb60bd0

❯ cd ../..
❯ ng build my-lib
Building Angular Package
******************************************************************************
It is not recommended to publish Ivy libraries to NPM repositories.
Read more here: https://v9.angular.io/guide/ivy#maintaining-library-compatibility
******************************************************************************

------------------------------------------------------------------------------
Building entry point 'my-lib'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
Bundling to FESM2015
Bundling to FESM5
Bundling to UMD
WARNING: No name was provided for external module 'ng-lazyload-image' in output.globals – guessing 'ngLazyloadImage'
Minifying UMD bundle
Writing package metadata
Removing devDependencies section in package.json.
Built my-lib

------------------------------------------------------------------------------
Built Angular Package
 - from: ng-lazyload-image-bugs/463-invalid-provider-for-lazyLoadImageHook-libs/projects/my-lib
 - to:   ng-lazyload-image-bugs/463-invalid-provider-for-lazyLoadImageHook-libs/dist/my-lib
------------------------------------------------------------------------------

Π•ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: https://github.com/tjoskar/ng-lazyload-image-bugs/tree/master/463-invalid-provider-for-lazyLoadImageHook-libs

И Π²ΠΎΡ‚ внСсСнныС ΠΌΠ½ΠΎΠΉ измСнСния: https://github.com/tjoskar/ng-lazyload-image-bugs/commit/1bf60bcbf6133751c41f52cd3d837614dfb60bd0

Π― понимаю, Ссли ваши ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΊΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСбольшой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠΎΠ½ Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, ΠΊΠΎΠ³Π΄Π° я создаю Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ΠΎΠΌ.

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° :(. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» LAZY LOAD MODULE Π² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ionic 5, angular 9. ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ

Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ionic 5 ΠΈ andular 9 ...

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это для компиляции, Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии:
npm install [email protected]
Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ionic 5.0.7 / Angular 8.2.14

Π― ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это для компиляции, Π²Π΅Ρ€Π½ΡƒΠ²ΡˆΠΈΡΡŒ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии:
npm install [email protected]
Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ionic 5.0.7 / Angular 8.2.14

это сработало .. спасибо ....

@ Davei234 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ спасибо

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ воспроизвСсти это, поэтому Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄, Ссли ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ смоТСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ это воспроизводится.
Π― создал нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ воспроизвСсти это:

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΊΠΎΠ΄ΠΎΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ это воспроизвСдСтС.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π»ΠΈ Ρƒ вас Ivy ? Π’ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, запустив ng version . Если ΠΎΠ½ Ρƒ вас ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½? Или ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ? Π― Π½Π΅ знаю, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ enableIvy Π² Ρ„Π°ΠΉΠ»Π°Ρ… tsconfig.sjon ΠΈ tsconfig.app.json .

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π»ΠΈ Ρƒ вас Ivy ? Π’ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, запустив ng version . Если ΠΎΠ½ Ρƒ вас ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½? Или ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ? Π― Π½Π΅ знаю, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ enableIvy Π² Ρ„Π°ΠΉΠ»Π°Ρ… tsconfig.sjon ΠΈ tsconfig.app.json .

Π― создаю свою Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Ρƒ мСня Π½Π΅Ρ‚ ΠΏΠ»ΡŽΡ‰Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ принимаСтся npm

ΠŸΠΎΡ…ΠΎΠΆΠ΅, вСрсия 8.0.1 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠ»ΡŽΡ‰ΠΎΠΌ. Однако я Π½Π΅ знаю ΠΏΠΎΡ‡Π΅ΠΌΡƒ прямо сСйчас.

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с angular 9, ΠΊΠΎΠ³Π΄Π° я ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ» IVY.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°, ΠΊΠΎΠ³Π΄Π° я ΡƒΠ΄Π°Π»ΠΈΠ» node_modules ΠΈ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ снова запустил npm install ΠΈ сборку.

Π”ΠΎ этого всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ с послСднСй вСрсиСй 8.0.1

ΠŸΠ»ΡŽΡ‰ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½.

Π― вСрнулся ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии (7.1.0), ΠΈ ΠΎΠ½Π° снова Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ Ρƒ мСня Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Ivy.
Он Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π΅Ρ€ΡΠΈΡŽ 7.1.0 ΠΏΡ€ΠΈ запускС Angular 9, Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Angular 10 Π²Ρ‹ΡˆΠ΅Π», этот большС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
ВСрсия 7 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ "ModuleWithProviders;" ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² Angular 10

static forRoot(options: ModuleOptions): ModuleWithProviders;

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ошибки
ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined. Usually it happens when: 1. There's a circular dependency (might be caused by using index.ts (barrel) files). 2. Class was used before it was declared. Use forwardRef in this case.

Π’Π° ΠΆΠ΅ ошибка с использованиСм angular 10 ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Ρ„Π°ΠΉΠ» исходного языка.
ng xi18n --format=xlf2 --output-path src/locales
Ошибка:
ERROR in Invalid provider for LazyLoadImageHooks. useClass cannot be undefined. Usually it happens when: 1. There's a circular dependency (might be caused by using index.ts (barrel) files). 2. Class was used before it was declared. Use forwardRef in this case.

Π― ΠΌΠΎΠ³Ρƒ воспроизвСсти это, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρƒ Айви. Π― создал ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Angular 10, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° я ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ» Ivy я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π― ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, которая, ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ с Ivy, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Π½Π΅Π΅. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈ посмотритС, сработаСт Π»ΠΈ ΠΎΠ½ для вас: npm install [email protected] .

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ собствСнныС Ρ…ΡƒΠΊΠΈ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄:
ΠŸΠ΅Ρ€Π΅Π΄:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { LazyLoadImageModule, IntersectionObserverHooks, Attributes } from 'ng-lazyload-image';
import { AppComponent } from './app.component';

class LazyLoadImageHooks extends IntersectionObserverHooks {
  async loadImage({ imagePath }: Attributes): Promise<string> {
    return await fetch(imagePath, {
      headers: {
        Authorization: 'Bearer ...',
      },
    })
      .then((res) => res.blob())
      .then((blob) => URL.createObjectURL(blob));
  }
}

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, LazyLoadImageModule.forRoot(LazyLoadImageHooks)],
  bootstrap: [AppComponent],
})
export class MyAppModule {}

ПослС:

import { NgModule, Injectable } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { LazyLoadImageModule, IntersectionObserverHooks, Attributes, LAZYLOAD_IMAGE_HOOKS } from 'ng-lazyload-image';
import { AppComponent } from './app.component';

@Injectable()
export class LazyLoadImageHooks extends IntersectionObserverHooks {
  async loadImage({ imagePath }: Attributes): Promise<string> {
    return await fetch(imagePath, {
      headers: {
        Authorization: 'Bearer ...',
      },
    })
      .then((res) => res.blob())
      .then((blob) => URL.createObjectURL(blob));
  }
}

@NgModule({
  declarations: [AppComponent],
  imports: [BrowserModule, LazyLoadImageModule],
  providers: [{ provide: LAZYLOAD_IMAGE_HOOKS, useClass: LazyLoadImageHooks }],
  bootstrap: [AppComponent],
})
export class MyAppModule {}

Π― Π²ΠΈΠΆΡƒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ angular 10 с ivy. Однако компиляция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° ng xi18n Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ошибкой, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅.

ОбновлСниС до 8.0.2-21 помогло.

Angular 10
[email protected]

providers: [{ provide: 'LazyLoadImageHooks', useClass: LazyLoadImageHooks }]

это сработало

Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно Π² вСрсии 9.0.0.

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