Ng-lazyload-image: Eigenschaft 'Art' von undefiniert kann nicht gelesen werden - Angular 7 Universelle Anwendung

Erstellt am 26. Feb. 2020  Â·  28Kommentare  Â·  Quelle: tjoskar/ng-lazyload-image

Gestern ng-lazyload-image installiert und eine Fehlermeldung erhalten:

ERROR in ./node_modules/ng-lazyload-image/fesm5/ng-lazyload-image.js
Module build failed (from ./node_modules/@angular-devkit/build-optimizer/src/build-optimizer/webpack-loader.js):
TypeError: Cannot read property 'kind' of undefined
    at isAngularDecoratorMetadataExpression (C:\Users\Denis\Desktop\Projects\VPWebsite\node_modules\@angular-devkit\build-optimizer\src\transforms\scrub-file.js:265:35)
    at checkNodeForDecorators (C:\Users\Denis\Desktop\Projects\VPWebsite\node_modules\@angular-devkit\build-optimizer\src\transforms\scrub-file.js:77:21)
    at visitNodes (C:\Users\Denis\Desktop\Projects\VPWebsite\node_modules\@angular-devkit\build-optimizer\node_modules\typescript\lib\typescript.js:16144:30)
    at Object.forEachChild (C:\Users\Denis\Desktop\Projects\VPWebsite\node_modules\@angular-devkit\build-optimizer\node_modules\typescript\lib\typescript.js:16370:24)

wenn laufen

ng build --prod

sieht aber gut aus mit _ng Serve_

Könnten Sie mir helfen, ich kÀmpfe seit mehr als einem Tag damit.

Meine AbhĂ€ngigkeiten nur fĂŒr den Fall:
"dependencies": { "@angular/animations": "6.1.10", "@angular/cdk": "6.4.7", "@angular/common": "7.2.13", "@angular/compiler": "7.2.13", "@angular/core": "7.2.13", "@angular/forms": "7.2.13", "@angular/http": "7.2.13", "@angular/material": "6.4.7", "@angular/platform-browser": "7.2.13", "@angular/platform-browser-dynamic": "7.2.13", "@angular/platform-server": "7.2.13", "@angular/router": "7.2.13", "@ng-bootstrap/ng-bootstrap": "4.1.1", "@ng-select/ng-select": "2.17.0", "@ng-toolkit/pwa": "7.1.1", "@ng-toolkit/universal": "7.1.1", "@ngneat/content-loader": "^4.1.0", "@nguniversal/express-engine": "7.1.1", "@nguniversal/module-map-ngfactory-loader": "7.1.1", "@ngx-meta/core": "7.0.0", "@swimlane/ngx-charts": "^12.0.1", "ajv-keywords": "3.4.0", "angular2-yandex-maps": "1.0.42", "bootstrap": "4.3.1", "core-js": "2.6.5", "crypto": "1.0.1", "crypto-js": "^3.1.9-1", "ejs": "^1.0.0", "et-line": "1.0.1", "express": "^4.16.4", "font-awesome": "4.7.0", "fs": "0.0.1-security", "http": "0.0.0", "jquery": "3.4.0", "jsencrypt": "^3.0.0-rc.1", "mock-browser": "^0.92.14", "moment": "2.24.0", "net": "1.0.2", "ng-lazyload-image": "^7.1.0", "ng-sidebar": "8.0.0", "ng5-slider": "1.1.14", "ngx-daterangepicker-material": "1.3.4", "ngx-mat-daterange-picker": "1.1.4", "ngx-owl-carousel": "2.0.7", "owl.carousel": "2.3.4", "path": "0.12.7", "popper.js": "1.15.0", "rxjs": "6.4.0", "rxjs-compat": "6.4.0", "stream": "0.0.2", "webpack-bundle-analyzer": "3.3.2", "zlib": "1.0.5", "zone.js": "0.8.29" }, "devDependencies": { "@angular-devkit/build-angular": "0.13.9", "@angular/cli": "7.3.8", "@angular/compiler-cli": "7.2.13", "@angular/language-service": "7.2.13", "@types/jasmine": "2.8.16", "@types/jasminewd2": "2.0.3", "@types/node": "8.9.4", "codelyzer": "4.5.0", "http-server": "0.11.1", "jasmine-core": "2.99.1", "jasmine-spec-reporter": "4.2.1", "karma": "^4.3.0", "karma-chrome-launcher": "2.2.0", "karma-coverage-istanbul-reporter": "2.0.5", "karma-jasmine": "1.1.2", "karma-jasmine-html-reporter": "0.2.2", "protractor": "5.4.2", "ts-loader": "5.3.3", "ts-node": "7.0.0", "tslint": "5.11.0", "typescript": "3.1.1", "webpack-cli": "3.3.0" }

Hilfreichster Kommentar

@Denis-Evseev, können Sie versuchen, diese Bibliothek auf die Version 7.0.1 herunterzustufen (indem Sie einfach Bearbeiten einstellen:

- "ng-lazyload-image": "^7.1.0",
+ "ng-lazyload-image": "7.0.1",

und npm install erneut ausfĂŒhren?)

Ich möchte nur wissen, ob dieses Problem in der neuesten Version aufgetreten ist oder ob es in einer frĂŒheren Version aufgetreten ist

Alle 28 Kommentare

@Denis-Evseev, können Sie versuchen, diese Bibliothek auf die Version 7.0.1 herunterzustufen (indem Sie einfach Bearbeiten einstellen:

- "ng-lazyload-image": "^7.1.0",
+ "ng-lazyload-image": "7.0.1",

und npm install erneut ausfĂŒhren?)

Ich möchte nur wissen, ob dieses Problem in der neuesten Version aufgetreten ist oder ob es in einer frĂŒheren Version aufgetreten ist

@tjoskar - "7.0.1" hat das Problem nicht gelöst, es wird immer noch der gleiche Fehler
Vielen Dank

@tjoskar - irgendwelche Ideen?

Welche Version von ng -cli verwenden Sie? Ich habe gerade folgendes gemacht:

❯ ng --version

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/


Angular CLI: 9.0.3
Node: 12.8.0
OS: darwin x64

Angular:
...
Ivy Workspace:

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.900.3
@angular-devkit/core         9.0.3
@angular-devkit/schematics   9.0.3
@schematics/angular          9.0.3
@schematics/update           0.900.3
rxjs                         6.5.3

❯ ng new my-app
❯ cd my-app
❯ ng build --prod
Your global Angular CLI version (9.0.3) is greater than your local
version (8.0.6). The local Angular CLI version is used.
...
build OK

# Adding ng-lazyload-image

❯ ng build --prod
Your global Angular CLI version (9.0.3) is greater than your local
version (8.0.6). The local Angular CLI version is used.
...
ERROR in ./node_modules/ng-lazyload-image/fesm5/ng-lazyload-image.js
Module build failed (from ./node_modules/@angular-devkit/build-optimizer/src/build-optimizer/webpack-loader.js):
TypeError: Cannot read property 'kind' of undefined
...

# Upgrade angular to version 9 so that Angular CLI and the local version match

❯ ng build --prod
# Build complete without warning or error

Ich habe den Fehler gegoogelt und es scheint, als ob er auftreten kann, wenn die cli- und die lokale Angular-Version nicht ĂŒbereinstimmen. Was ist die Ausgabe von ng --version ?

Hallo, wir haben das gleiche Problem mit Angular 8 beim Versuch, die SSR-Dateien zu erstellen.

ng-lazyload-image: 7.1.0

image

Aktualisieren:
Das Downgrade auf 7.0.1 hat bei mir funktioniert..

@RFreij , ist es Ihnen möglich, abzugleichen (damit die Warnung verschwindet?). Z.B. indem Sie Ihre lokale Angular-Version auf 8.3.25 aktualisieren?

@tjoskar das war meine zweite Option, die ich nach dem Downgrade ausprobieren wollte. Aber das Downgrade auf 7.0.1 scheint bei mir bereits funktioniert zu haben.

Ich werde es mit 7.1.0 versuchen und mit lokaler cli-Version das gleiche fĂŒr dich. Nur um es auszuschließen

@tjoskar hat leider eine lokale cli-Version wie die globale nicht mit v7.1.0 funktioniert

image

image

@tjoskar @RFreij - keine Ideen, wie man das

@Denis-Evseev fĂŒr mich hat es durch ein Downgrade auf 7.0.1 funktioniert

Ich habe das gleiche Problem. Ein Downgrade auf 7.0.1 hilft mir nicht

Downgrade auf 7.0.1 hat mir auch geholfen :tada:

Ich kann dies nicht reproduzieren, ohne eine Version von Angular CLI zu verwenden, die nicht mit der lokalen Version von Angular ĂŒbereinstimmt. Hat jemand ein Projekt, bei dem dieses Problem reproduziert werden kann, das Sie mit mir teilen können?

@tjoskar Ich habe versucht, einen fĂŒr dich zu erstellen. Aber es scheint, dass ich es bei einer Neuinstallation von Angular 8 nicht reproduzieren kann. Sowohl ng serve als auch ng build --prod funktionieren bei der Neuinstallation einwandfrei.

Gleicher Fehler hier mit anderer Version von Winkel, aber auch SSR

image

Sagen Sie mir, ob Daten oder Tests erforderlich sind. Ich habe auch mit 7.0.1 und 7.1.0 getestet

Ich habe nach dem Problem gegoogelt und festgestellt, dass der Fehler bei Ă€lteren Versionen von Typoskript ĂŒblich ist, und ich sehe, dass Sie 3.2.4 das vor ĂŒber einem Jahr veröffentlicht wurde und 3.1.1 im September 2018 veröffentlicht wurde. Ist es möglich, dass Sie versuchen, die Typoskriptversion zu aktualisieren?

A-Bevor ich das Problem bekam

Meine WinkelabhÀngigkeiten
"@angular/animations": "^8.2.14",
"@angular/common": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",

Die Dev-AbhÀngigkeiten
"@angular-devkit/architect": "~0.801.2",
"@angular-devkit/build-angular": "~0.801.2",
"@angular-devkit/core": "~8.1.2",
"@angular-devkit/schematics": "~8.1.2",
"@angular/cli": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@ionic/angular-toolkit": "~2.0.0",

Und "ng-lazyload-image": "^7.1.0",

B-Jetzt Nach Behebung des Problems

Alles bleibt gleich außer
"ng-lazyload-image": "^7.0.1",
"@angular-devkit/build-angular": "~0.803.24",

Ich habe lazy-image auf 6.0.1 herabgestuft und jetzt funktioniert es.
Davor habe ich versucht, die Typoskriptversion ohne Ergebnis zu aktualisieren, da die höchste zulĂ€ssige Version fĂŒr mein Projekt 3.3.0 war, da ich auf angle7 bin und derzeit nicht daran interessiert bin, auf angle8 zu aktualisieren.

ERROR in The Angular Compiler erfordert TypeScript >=3.1.1 und <3.3.0, aber stattdessen wurde 3.8.3 gefunden.

Danke fĂŒr deine Antwort @jmelich. Nur aus Neugier, warum möchten Sie Angular nicht aktualisieren? Das LTS fĂŒr Angular 7 endet am 18. April, also denke ich, es ist an der Zeit :)

Im Moment haben wir andere PrioritĂ€ten und Aufgaben zu erledigen, danach werden wir diese App sicherlich auf den neuesten Winkel aktualisieren, aber nicht jetzt. Diese letzte Änderung, an der Ihre Bibliothek beteiligt war, sollte die Seitengeschwindigkeit mit geringem Aufwand erheblich verbessern, da sie viele Bilder enthĂ€lt. Übrigens, danke fĂŒr dein Interesse und dein Paket, es funktioniert wirklich gut :P

@jmelich Ich bin heute fĂŒr 30 Minuten zu Angular 8 migriert!
Lazy Loading funktioniert jetzt wie ein Zauber!
Verwendet: https://medium.com/better-programming/upgrade-to-angular-8-beta-within-10-minutes-cd831fb8dd0e

@Denis-Evseev Ich schĂ€tze Ihren Link sehr und ich werde es versuchen, wenn Sie bestĂ€tigen, dass es nur 30 Minuten waren :) . TatsĂ€chlich haben wir 2 Apps in Angular, beide mit Version 7, aber eine davon ist wirklich groß und mit vielen Workarounds fĂŒr seltsame Anforderungen und viele AbhĂ€ngigkeiten. Wie auch immer, es sieht so aus, als ob wir im Moment alle zu viel Zeit haben, also werde ich es bald versuchen. Vielen Dank!

Es tut mir leid, dass dies ein Problem fĂŒr Sie alle ist, und ich wĂŒnschte, ich hĂ€tte eine Lösung, aber ich kenne das Problem nicht. Ich bin mir ziemlich sicher, dass es etwas mit der Typoskript- (und Angular-) Version zu tun hat. Ich wĂŒrde gerne ein Projekt erstellen, in dem ich das Problem reproduzieren kann, damit ich es debuggen kann, aber gleichzeitig wird Angular 7 in weniger als einem Monat veraltet sein und vom Angular-Team nicht mehr unterstĂŒtzt werden und daher nicht auch von mir.

Wenn jemand ein Projekt teilen kann, in dem dies reproduziert werden kann, werde ich es mir ansehen und versuchen, es zu reparieren.

@Denis-Evseev, können Sie versuchen, diese Bibliothek auf die Version 7.0.1 herunterzustufen (indem Sie einfach Bearbeiten einstellen:

- "ng-lazyload-image": "^7.1.0",
+ "ng-lazyload-image": "7.0.1",

und npm install erneut ausfĂŒhren?)

Ich möchte nur wissen, ob dieses Problem in der neuesten Version aufgetreten ist oder ob es in einer frĂŒheren Version aufgetreten ist

Ich kann bestÀtigen, dass dies funktioniert (Downgrade)

In Version 7.1.0 ich ng-packagr auf Version 9.0.0

FĂŒr Winkel 7:
Es sieht so aus, als ob es fĂŒr die meisten von euch funktioniert, ng-lazyload-image auf Version 7.0.1 herunterzustufen und da das Angular-Team den Support fĂŒr Version 7 in wenigen Wochen (18. April) einstellen wird, bin ich nicht sicher werde ich das beheben. Ich werde jedoch PRs akzeptieren, wenn jemand möchte:

  1. Checke diese Lib
  2. Downgrade ng-packagr auf 5.7.0 und Typoskript auf 3.5.3
  3. Reduzieren Sie die ts-Syntax in dieser Bibliothek (auch bekannt als das ts-Problem beheben, das beim Versuch des Builds auftritt)
  4. Erstellen Sie eine lokale Version der Bibliothek (npm run build && cd dist && npm pack)
  5. Installieren Sie das Bundle in Ihrer App (npm install ../path/to/ng-lazyload-image/dist/ng-lazyload-image-7.1.0.tgz)
  6. FĂŒhren Sie ng build --prod in Ihrer App aus, um zu sehen, ob der Fehler behoben ist.

FĂŒr Winkel 8:
Es sieht so aus, als ob Sie Typoskript auf 3.6.4 aktualisieren können und es wird funktionieren

FĂŒr Winkel 9:
Diese Version unterstĂŒtzt nur Typescript 3.7 und höher, daher gibt es hier kein Problem.

Bitte lassen Sie es mich wissen, wenn ich in irgendeiner Weise falsch liege.

@Denis-Evseev, können Sie versuchen, diese Bibliothek auf die Version 7.0.1 herunterzustufen (indem Sie einfach Bearbeiten einstellen:

- "ng-lazyload-image": "^7.1.0",
+ "ng-lazyload-image": "7.0.1",

und npm install erneut ausfĂŒhren?)

Ich möchte nur wissen, ob dieses Problem in der neuesten Version aufgetreten ist oder ob es in einer frĂŒheren Version aufgetreten ist

Danke.
FĂŒr mich geht das!

Es stellte sich heraus, dass es beim Downgrade von 7.1.0 auf 7.0.1 tatsĂ€chlich funktioniert, aber dann konnte ich das OnStateChange-Ereignis nicht verwenden, da diese FunktionalitĂ€t anscheinend tatsĂ€chlich in der Version 7.1.0 enthalten war. Ich musste dazu fĂŒhren, dass onLoad verwendet wird, das nur einen booleschen Wert zurĂŒckgibt.

wie @Denis-Evseev sagte, mĂŒssen Sie direkt zu "7.0.1" wechseln und auch den Verweis auf "7.1.0" aus der package.lock-Datei löschen, damit eine Neuinstallation der "7.0. 1"-Version. ZusĂ€tzlich können Sie den Ordner "ng-lazy-load-image" aus dem Verzeichnis node_modules löschen

Angular 7 wird vom Angular-Team nicht mehr unterstĂŒtzt und wird daher auch nicht von ng-lazyload-image . Ich nehme jedoch gerne PRs oder VorschlĂ€ge zur Behebung dieses Problems an.

Wenn jemand ein Àhnliches Problem mit Angular 8 oder 9 hat, erstellen Sie bitte ein neues Problem.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen