Behebung von Angular-Fehler: Unexpected value 'undefined' declared by the module

English Deutsch

Symptom:

Für ein Modul von dir erhältst du beim Laden eine Fehlermeldung wie diese:

error.txt
Error: Unexpected value 'undefined' declared by the module 'MyModule'
    at syntaxError (compiler.js:1021)
    at compiler.js:10623
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver.push../node_modules/@angular/compiler/fesm5/compiler.js.CompileMetadataResolver.getNgModuleMetadata (compiler.js:10621)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._loadModules (compiler.js:23876)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler._compileModuleAndComponents (compiler.js:23857)
    at JitCompiler.push../node_modules/@angular/compiler/fesm5/compiler.js.JitCompiler.compileModuleAsync (compiler.js:23817)
    at CompilerImpl.push../node_modules/@angular/platform-browser-dynamic/fesm5/platform-browser-dynamic.js.CompilerImpl.compileModuleAsync (platform-browser-dynamic.js:143)
    at core.js:4999
[...]

Lösung

Versuche zuerst, ng serve neu zu starten. In einigen Fällen behebt dies das Problem direkt.

Die Fehlermeldung wird dadurch verursacht, dass ein Element in deiner @NgModule-declarations: [ /* ... */ ] undefined ist (… declared by the module in der Fehlermeldung ist wörtlich zu nehmen, es steht in den declarations!).

Wenn du zum Beispiel eine @NgModule-Deklaration wie diese hast:

example.module.ts
@NgModule({
  imports: [
    RecallCommonModule,
    CommonModule,
    MyRoutingModule
  ],
  declarations: [,
    MyDetailComponent,
    MySearchComponent
  ],
  providers: []
})

Das Problem liegt in dem einsamen Komma in der declarations-Zeile: Beim Kompilieren ergibt es [undefined, MyDetailComponent, MySearchComponent]. Das Entfernen des einsamen Kommas behebt das Problem.

Eine weitere mögliche Ursache für diesen Fehler ist, wenn einer der Werte in den declarations undefined ist.

Wenn du zum Beispiel eine Import-Anweisung wie

import-my-component.js
import { MyComponent } from './my.component';

in deiner Modul-Datei hast und MyComponent aus irgendeinem Grund undefined ist, wird dieselbe Fehlermeldung angezeigt.

Um herauszufinden, welche deiner Komponenten im declarations-Array das Problem verursacht, könntest du vorübergehend eine Anweisung wie diese vor deinem @NgModule hinzufügen:

detect-undefined.js
if(MyComponent === undefined) {
  console.log("MyComponent is undefined!");
}

Wenn du keines der oben genannten Probleme hast, folge dem Standardverfahren: Kommentiere jedes Element in deinem declarations-Array aus und prüfe, welches das Verschwinden der Fehlermeldung bewirkt.


Check out similar posts by category: Angular, Javascript