110 votes

Erreur : Une valeur inattendue 'undefined' importée par le module

J'obtiens cette erreur après avoir migré vers NgModule, l'erreur n'aide pas trop, un conseil s'il vous plaît ?

Error: Error: Unexpected value 'undefined' imported by the module 'AppModule'
        at new BaseException (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:5116:27)
        at eval (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:13231:35)
        at Array.forEach (native)
        at CompileMetadataResolver.getNgModuleMetadata (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:13215:48)
        at RuntimeCompiler._compileComponents (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:15845:51)
        at RuntimeCompiler._compileModuleAndComponents (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:15769:41)
        at RuntimeCompiler.compileModuleAsync (http://localhost:5555/node_modules/@angular/compiler/bundles/compiler.umd.js:15746:25)
        at PlatformRef_._bootstrapModuleWithZone (http://localhost:5555/node_modules/@angular/core/bundles/core.umd.js:9991:29)
        at PlatformRef_.bootstrapModule (http://localhost:5555/node_modules/@angular/core/bundles/core.umd.js:9984:25)
        at Object.eval (http://localhost:5555/app/main.js:8:53)
    Evaluating http://localhost:5555/app/main.js
    Error loading http://localhost:5555/app/main.js "Report this error at https://github.com/mgechev/angular2-seed/issues"(anonymous function) @ contracts:142ZoneDelegate.invoke @ zone.js?1472711930202:332Zone.run @ zone.js?1472711930202:225(anonymous function) @ zone.js?1472711930202:586ZoneDelegate.invokeTask @ zone.js?1472711930202:365Zone.runTask @ zone.js?1472711930202:265drainMicroTaskQueue @ zone.js?1472711930202:491ZoneTask.invoke @ zone.js?1472711930202:435

app.module.ts :

    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { APP_BASE_HREF } from '@angular/common';
    import { RouterModule } from '@angular/router';
    import { HttpModule } from '@angular/http';
    import { AppComponent } from './app.component';
    import { routes } from './app.routes';

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

    //dgf ng2-translate
    import { TRANSLATE_PROVIDERS, TranslateLoader, TranslateStaticLoader, MissingTranslationHandler } from 'ng2-translate/ng2-translate';
    import { HTTP_PROVIDERS, Http } from '@angular/http';
    import { FormsModule,ReactiveFormsModule } from '@angular/forms';
    import { TranslationNotFoundHandler } from './shared/common/TranslationNotFoundHandler';
    //dgf ng2-translate END

    import {CalendarModule,DataTableModule,DialogModule,PanelModule} from 'primeng/primeng';

    import {TranslateModule} from 'ng2-translate/ng2-translate';

    import { AuthGuard,AppConfigService,AppConfig,DateHelper,ThemeComponent,ToolbarComponent, RemoveHostTagDirective } from './index';
    import { HomeComponent,MessagesExampleComponent,PrimeNgHomeComponent,CalendarComponent,Ng2BootstrapExamplesComponent,DatepickerDemoComponent,UserListComponent,UserEditComponent,ContractListComponent,AboutComponent } from './index';

@NgModule({
  imports: [BrowserModule, HttpModule, RouterModule.forRoot(routes), /* AboutModule, HomeModule, SharedModule.forRoot()*/
          FormsModule,
          ReactiveFormsModule,
          //third-party
          ,TranslateModule.forRoot() //,
          //third-party PRIMENG
          ,CalendarModule,DataTableModule,DialogModule,PanelModule
  ],
  declarations: [
    AppComponent,ThemeComponent, ToolbarComponent, RemoveHostTagDirective,
    HomeComponent,MessagesExampleComponent,PrimeNgHomeComponent,CalendarComponent,Ng2BootstrapExamplesComponent,DatepickerDemoComponent,UserListComponent,UserEditComponent,ContractListComponent,AboutComponent
  ],
  providers: [{
      provide: APP_BASE_HREF,
      useValue: '<%= APP_BASE %>'
    },
    FormsModule,
    ReactiveFormsModule,
    provide(TranslateLoader, { //DGF ng2-translate
          useFactory: (http: Http) => new TranslateStaticLoader(http, 'assets/i18n', '.json'),
          deps: [Http]
      }),
    provide(MissingTranslationHandler, { useClass: TranslationNotFoundHandler }), //DGF ng2-translate

    AuthGuard,AppConfigService,AppConfig,
    DateHelper
  ],
  bootstrap: [AppComponent]
})

export class AppModule { }

3 votes

J'ai rencontré ce problème lorsque j'avais deux modules qui s'importaient l'un l'autre.

0 votes

J'ai eu le même problème, redémarrer l'éditeur a aidé. Il ne reconnaissait pas les fichiers nouvellement ajoutés.

6 votes

Qui d'autre pense que les erreurs comme celles-ci devraient être plus explicites ?

231voto

Jalal El-Shaer Points 6027

Pour toute personne rencontrant cette même erreur, ma situation est que j'ai des doubles virgules dans la section des importations.

imports: [
      BrowserModule,
      HttpModule,
      FormsModule,
      RouterModule.forRoot(appRoutes), , // <-- this was the error
      // .... 
],

2 votes

C'était un point (.) pour moi

86voto

Tuong Le Points 905

Assurez-vous que les modules ne s'importent pas les uns les autres. Donc, il ne devrait pas y avoir

Dans le module A : imports[ModuleB]

Dans le module B : imports[ModuleA]

0 votes

Parfois, ils peuvent faire référence l'un à l'autre même s'ils ne sont utilisés que comme type. Dans ce cas, il faut les importer comme un type par exemple : import type {XYZ} from './xyz' . Ce faisant, j'ai résolu mon problème.

61voto

Ignatius Andrew Points 4089

Cela peut être causé par de multiples scénarios comme

  1. Virgules manquantes

    imports: [ BrowserModule ,routing <= Missing Comma ,FeatureComponentsModule ],

  2. Double virgule

    imports: [ BrowserModule, ,routing <=Double Comma ,FeatureComponentsModule ],

  3. Ne rien exporter du module

  4. Erreurs de syntaxe

  5. Erreurs de frappe

  6. Les points-virgules dans les objets et les tableaux

  7. Déclarations d'importation incorrectes

3 votes

Bon résumé. Ce serait formidable si Angular pouvait fournir des informations sur l'endroit et la manière dont le chargement des modules échoue. En l'état actuel des choses, c'est l'une des choses les plus fastidieuses à déboguer. Je ne suis pas sûr de comprendre la partie "virgules manquantes", cela devrait compiler correctement ?

0 votes

Je comprends la partie "virgules manquantes" - vérifiez les fichiers app.module.ts - imports :, providers :, declarations...etc ensemble de tableaux - Dans la liste des valeurs de chaînes mentionnées, vérifiez que les virgules sont EXTRA ou manquantes... J'ai résolu ce problème en supprimant les virgules supplémentaires ! @Ignatius Andrew... vous êtes DIEU ! Angular 2/4 est assez bizarre !

38voto

J'ai eu le même problème. Dans mon cas, la raison est une virgule supplémentaire.

Code example of extra comma

0 votes

Après toutes ces années, cela arrive encore... THX

25voto

Helzgate Points 11

J'ai eu cette erreur parce que j'avais un index.ts dans la racine de mon application qui exportait ma app.component.ts . J'ai donc pensé que je pouvais faire ce qui suit :

import { AppComponent } from './';

Cela a fonctionné et ne m'a pas donné de lignes rouges et sinueuses et même intellisense fait apparaître AppComponent lorsque vous commencez à le taper. Mais j'ai découvert que cela provoquait cette erreur. Après l'avoir changé en :

import { AppComponent } from './app.component';

L'erreur a disparu.

1 votes

Je pense que ce qui fonctionne également, c'est lorsque vous écrivez explicitement './index'. Nous avons eu ce problème en combinaison avec AoT et ng-packagr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X