TypeError: Cannot read property 'Mitglieder' undefined
Begann ich ein Upgrade von Eckigen 4.4.4 zu 5.1.1 heute. Ich habe ein upgrade einer Anzahl von anderen Paketen, die sich auf eckige, als auch. Ich bekomme eine Fehlermeldung mit so wenig Kontext, ich habe keine Ahnung, wo zu beginnen. Hat sonst noch jemand gesehen und weiß was das Problem ist?
$ ng serve --aot=false
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/**
Date: 2017-12-19T15:26:36.137Z
Hash: bf0b773d5dfafdd9133b
Time: 16934ms
chunk {inline} inline.bundle.js (inline) 5.79 kB [entry] [rendered]
chunk {main} main.bundle.js (main) 2.93 kB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 636 bytes [initial] [rendered]
chunk {scripts} scripts.bundle.js (scripts) 307 kB [initial] [rendered]
chunk {styles} styles.bundle.js (styles) 4.03 MB [initial] [rendered]
chunk {vendor} vendor.bundle.js (vendor) 855 kB [initial] [rendered]
ERROR in TypeError: Cannot read property 'members' of undefined
at AotSummaryResolver.resolveSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:32638:56)
at CompileMetadataResolver._loadSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:14825:66)
at CompileMetadataResolver._getEntryComponentMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15857:66)
at C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15323:55
at Array.map (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15323:18)
at CompileMetadataResolver.getNgModuleSummary (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15157:52)
at C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15245:72
at Array.forEach (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:15230:49)
at visitLazyRoute (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:31061:104)
at AotCompiler.listLazyRoutes (C:\source\app\node_modules\@angular\compiler\bundles\compiler.umd.js:31029:20)
at AngularCompilerProgram.listLazyRoutes (C:\source\app\node_modules\@angular\compiler-cli\src\transformers\program.js:156:30)
at Function.NgTools_InternalApi_NG_2.listLazyRoutes (C:\source\app\node_modules\@angular\compiler-cli\src\ngtools_api.js:44:36)
at AngularCompilerPlugin._getLazyRoutesFromNgtools (C:\source\app\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:248:66)
at Promise.resolve.then.then (C:\source\app\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:562:50)
webpack: Failed to compile.
Seltsam finde ich, dass es beginnt in AotSummaryResolver
wenn ich --aot=false der Befehl dienen.
Hier ist mein Paket.json:
{
"name": "test",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve --aot=false",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@agm/core": "^1.0.0-beta.2",
"@angular-devkit/schematics": "^0.0.42",
"@angular/animations": "5.1.1",
"@angular/cdk": "5.0.1",
"@angular/common": "5.1.1",
"@angular/compiler": "5.1.1",
"@angular/core": "5.1.1",
"@angular/forms": "5.1.1",
"@angular/http": "5.1.1",
"@angular/platform-browser": "5.1.1",
"@angular/platform-browser-dynamic": "5.1.1",
"@angular/platform-server": "5.1.1",
"@angular/router": "5.1.1",
"@auth0/angular-jwt": "^1.0.0-beta.9",
"@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.8",
"@ng-idle/core": "^2.0.0-beta.13",
"@ngrx/core": "^1.2.0",
"@ngrx/effects": "^4.1.1",
"@ngrx/entity": "^4.1.1",
"@ngrx/store": "^4.1.1",
"@ngrx/store-devtools": "^4.1.1",
"@schematics/angular": "^0.1.11",
"@schematics/schematics": "^0.0.11",
"angular2-counto": "^1.2.3",
"bootstrap": "4.0.0-beta.2",
"core-js": "2.4.1",
"d3": "^4.11.0",
"echarts": "^3.6.0",
"echarts-gl": "^1.0.0-alpha.5",
"font-awesome": "^4.7.0",
"global": "^4.3.2",
"intl": "^1.2.5",
"jquery": "^3.2.1",
"moment": "^2.19.4",
"ng2-dnd": "^5.0.2",
"popper.js": "^1.11.0",
"roboto-fontface": "^0.7.0",
"rxjs": "^5.5.2",
"toastr": "^2.1.2",
"ts-action": "^3.2.2",
"typings": "^2.1.1",
"uuid": "^3.1.0",
"web-animations-js": "^2.2.5",
"yarn": "^0.24.5",
"zone.js": "0.8.4"
},
"devDependencies": {
"@angular/cli": "1.6.1",
"@angular/compiler-cli": "5.1.1",
"@types/d3": "^4.11.0",
"@types/echarts": "^0.0.6",
"@types/hammerjs": "^2.0.34",
"@types/jasmine": "2.5.38",
"@types/jquery": "^2.0.45",
"@types/node": "^7.0.23",
"@types/toastr": "^2.1.33",
"@types/uuid": "^3.4.0",
"codelyzer": "^4.0.2",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0",
"json-server": "^0.12.0",
"jsonwebtoken": "^7.4.1",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^0.2.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.0",
"ts-node": "~2.0.0",
"tslint": "^5.8.0",
"typemoq": "^1.7.0",
"typescript": "2.4.2"
}
}
Mein Winkel-cli-version ist 1.6.1.
Der Fehler scheint aufzutreten, hier in der eckigen source-code:
https://github.com/angular/angular/blob/b3eb1db6dd57a0820cfc94af5460ceb3fea20610/packages/compiler/src/aot/summary_resolver.ts#L68
LÖSUNG
Bisher dachte ich, es war in Bezug auf die ng-bootstrap falsch.
Fand ich einige Kontext für Sie, indem Sie eine Konsole-log-in Zeile 15207 in compiler.umd.js wie folgt:
if (meta.entryComponents) {
console.log(meta);
entryComponents.push.apply(entryComponents, flattenAndDedupeArray(meta.entryComponents)
.map(function (type) { return /** @type {?} */((_this._getEntryComponentMetadata(type))); }));
}
Welche ergab:
...
entryComponents: [ undefined ],
...
Hatte ich ein Modul mit entryComponents: [MdProgressSpinner]
wo MdProgressSpinner
wurde nicht importiert. Wenn ich es entfernt, der Fehler ging Weg... und der nächste kam 🙂
- haben Sie testen Sie Ihren code vor, um sicherzustellen, dass es funktionierte vor dem upgrade?
- Das ist eine Menge von Drittanbieter-angular-spezifische Pakete. Da dies ist eine version ändern (breaking change), die Sie benötigen, um sicherzustellen, dass alle Pakete die Unterstützung der neuen version. (ng-boostrap, ng-im Leerlauf, ngrx, Schaltpläne, angular2-counto, etc)
- Ja, ich lief ihm kurz vor dem upgrade.
- Scheint verknüpft werden, um den ng-bootstrap. Ich ausgeloggt einige Informationen, die in der compiler-und ich sehe eine Undefinierte kommen. Ich herabgestuft, auf die empfohlene version (5.0.2) und jetzt bekomme ich "Cannot read property 'assertNoMembers' of undefined" 🙂
- Löste das Problem, indem Sie einen undefinierten Eintrag Komponente. Eine bessere Fehlermeldung wäre schön gewesen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer der Gründe, warum dies passieren kann, ist Sie in-app-Modul, müssen Sie einen Eintrag der Komponenten, die den build-Prozess nicht finden können, ein import für (unten ein Beispiel, wenn ich den Kommentar aus der Zeile importieren und lassen Sie die Komponente, und klicken Sie verursacht diesen Fehler).
Ich hatte das gleiche Problem und hätte fast aufgegeben. Ihre Frage enthielt den Tipp, der mir geholfen lokalisieren des Problems, aber ich habe Total verpasst, weil es war Teil der Frage.
Setzen Sie ein Konsole log-in Zeile 15258 in compiler.umd.js (oder was auch immer die genaue Zeile den Fehler zeigt Sie an):
if (meta.entryComponents) {
console.log(meta); //<== Add this
Meine Konsole log enthalten die folgenden am Ende:
{ ngMetadataName: 'NgModule',
Erklärungen: [ null ], ... entryComponents: [ null ] }
Die Frage stellte sich heraus, dass ein Modul importiert eine Klasse wie folgt aus:
import MyComponent from "./my-component.component.ts";
Die Klasse exportiert wurde mit Standard:
export default class MyComponent { ...
Entfernen
default
, und das hinzufügen von geschweiften Klammern funktioniert der import!import { MyComponent } from "./my-component.component.ts";
Wurde ich immer diese Fehlermeldung beim erstellen eines neuen Bibliothek. Es stellte sich heraus, dass in public_api.ts der Bibliothek, ich war das importieren eines index.ts - Datei. Diese Art von bundle sind noch nicht gut im Griff. Macht eine separate Importe für jede Datei setzen Sie das öffentliche API war die Lösung in meinem Fall.
NgModule
zu re-exportieren.index.ts
) Datei fehlschlägt, aufgrund der Reihenfolge derexport
- Anweisungen