web-dev-qa-db-fra.com

Angular 9: La valeur à la position X dans le NgModule.imports n'est pas une référence

J'ai mis à niveau une application Angular de la v8 à la v9. Le projet importe une bibliothèque d'interface utilisateur personnalisée en utilisant Angular 8 et moment.js.

Quand je le construis:

  1. Il génère un avertissement:
WARNING in Entry point '@myLib/catalogue' contains deep imports into
 '/Users/xyz/Projects/forms-frontend/node_modules/moment/locale/de'.
This is probably not a problem, but may cause the compilation of entry points to be out of order.

Dans le @myLib/catalogue.js fichier de la bibliothèque (dans le dossier node_modules), la locale moment.js DE est importée comme suit:

import 'moment/locale/de';


  1. Des erreurs de compilation sont également déclenchées:
ERROR in Failed to compile entry-point @myLib/catalogue (es2015 as esm2015) due to compilation errors:
node_modules/@myLib/catalogue/fesm2015/catalogue.js:213:26 - error NG1010: Value at position 2 in the NgModule.imports of FormInputModule is not a reference: [object Object]

213                 imports: [
                             ~
214                     CommonModule,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
... 
219                     TranslateModule
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
220                 ],
    ~~~~~~~~~~~~~~~~~

Le texte de l'avertissement semble expliquer exactement l'erreur de compilation, où la position (2 dans ce cas) est hors de portée du tableau des importations.

J'ai vu différents articles/ problèmes github sur les liens profonds, mais aucune solution de travail.

2
Francesco

Dans mon cas, je pense qu'il y avait des incompatibilités entre certaines des bibliothèques angular qui ont été importées. Je pense que j'ai précédemment modifié manuellement @angular/material à 9.2.3 sans heurter les autres angular bibliothèques.

Lorsque j'ai créé un nouveau référentiel en utilisant: ng new test-ng9 puis ajouté angular matériel ng add @angular/material, il n'y a eu aucun problème de compilation.

J'ai donc pris les dépendances que le angular cli inclus dans le dépôt temporaire et remplacé celles de mon référentiel existant. Ensuite, cela a bien fonctionné.

Avant:

    "@angular/animations": "~9.1.6",
    "@angular/cdk": "9.1.1",
    "@angular/common": "~9.1.1",
    "@angular/compiler": "~9.1.1",  
    "@angular/core": "~9.1.1",
    "@angular/forms": "~9.1.1",
    "@angular/material": "9.2.3",
    "@angular/platform-browser": "~9.1.1",
    "@angular/platform-browser-dynamic": "~9.1.1",
    "@angular/router": "~9.1.1",

Après:

    "@angular/animations": "~9.1.6",
    "@angular/cdk": "9.1.1",    
    "@angular/common": "~9.1.6",
    "@angular/compiler": "~9.1.6",
    "@angular/core": "~9.1.6",
    "@angular/forms": "~9.1.6",
    "@angular/material": "^9.2.4",
    "@angular/platform-browser": "~9.1.6",
    "@angular/platform-browser-dynamic": "~9.1.6",
    "@angular/router": "~9.1.6",
0
Clement

# 2 m'est arrivé après avoir accidentellement utilisé npm link dans le dossier d'un projet au lieu de son dossier dist.

0
Jony Adamit