web-dev-qa-db-fra.com

ERREUR dans la non-concordance de version des métadonnées pour le module X trouvé la version 4, attendue 3, résolution du symbole Y

J'essaie de créer une application Angular 4 avec angular-cli (ng build) et qui utilise ngx-clipboard. J'ai soudainement commencé à obtenir l'erreur suivante il y a quelques jours, même si le code source de mon application n'a pas changé:

ERROR in Metadata version mismatch for module
ngx-clipboard/dist/index.d.ts, found version 4, expected 3, resolving
symbol AppModule in ...

Si je reviens à un commit plus ancien qui fonctionnait, il échoue maintenant de la même manière.

J'utilise npm pour la gestion des packages. Extrait de mon package.json:

   "dependencies": {
     "@angular/animations": "4.0.0",
     "@angular/common": "4.0.0",
     "@angular/compiler": "4.0.0",
     "@angular/compiler-cli": "4.0.0",
     "@angular/core": "4.0.0",
     "@angular/forms": "4.0.0",
     "@angular/http": "4.0.0",
     "@angular/platform-browser": "4.0.0",
     "@angular/platform-browser-dynamic": "4.0.0",
     "@angular/platform-server": "4.0.0",
     "@angular/router": "4.0.0",
     "@types/highcharts": "^5.0.8",
     "angular2-busy": "^2.0.1",
     "bootstrap": "^3.3.6",
     "core-js": "^2.4.1",
     "element-resize-detector": "^1.1.11",
     "highcharts": "5.0.8",
     "jquery": "^1.11.3",
     "moment": "^2.10",
     "ng2-dragula": "^1.5.0",
     "ng2-tooltip": "0.0.7",
     "ngx-bootstrap": "^1.8.1",
     "ngx-clipboard": "^8.0.2",
     "ngx-clipboard": "~8.0.2",
     "ngx-popover": "0.0.16",
     "primeng": "4.1.0",
     "rxjs": "~5.0.3",
     "ts-helpers": "^1.1.2",
     "zone.js": "^0.8.4",
     "ngx-infinite-scroll": "^0.5.2",
     "ng-circle-progress": "0.9.6",
     "@ngx-translate/core": "^7.1.0"
   },
   "devDependencies": {
     "@angular/cli": "1.0.0",
     "@types/jasmine": "2.5.52",
     "codelyzer": "~3.0.1",
     "frisby": "~0.8.5",
     "jasmine-core": "2.6.3",
     "jasmine-reporters": "^2.2.1",
     "jasmine-spec-reporter": "4.1.0",
     "karma": "1.7.0",
     "karma-cli": "^1.0.1",
     "karma-jasmine": "^1.1.0",
     "karma-phantomjs-launcher": "^1.0.4",
     "karma-remap-istanbul": "^0.6.0",
     "protractor": "~5.2.0",
     "protractor-jasmine2-screenshot-reporter": "^0.5.0",
     "stylelint": "^7.11.0",
     "stylelint-config-standard": "^16.0.0",
     "ts-node": "3.3.0",
     "tslint": "~5.4.3",
     "TypeScript": "~2.3.4"
   }
10
Will

Notez que la dépendance "ngx-clipboard": "^8.0.2" Se résout désormais en v8.1.2, qui est une mise à niveau récente dont le timing correspond à l'erreur de construction. En examinant le diffs entre cela et la version précédente de ngx-clipboard, ils incluent une mise à niveau vers Angular 5.

Il s'avère que le message d'erreur de génération indique un problème de compatibilité Angular. Le ngx-clipboard nécessite Angular 5+, mais comme on peut le voir sur package.json, Angular 4 est actuellement fourni. Si vous rétrogradez le spécificateur de version de dépendance de ngx-clipboard vers 8.1.1 Ou ~8.0.2, La génération passe à nouveau. Si vous effectuez plutôt une mise à niveau vers Angular 5, la version doit également passer.

Solution générale

Symptôme

Il s'agit d'un modèle général qui s'applique à l'erreur de génération ERROR in Metadata version mismatch for module <X> found version 4, expected 3, resolving symbol <Y> De angular-cli.

Résolution

Mettez à niveau vers Angular 5 ou rétrogradez la dépendance (qui dépend maintenant de Angular 5) vers la version précédente compatible avec Angular 4.

Ressources

Cette solution m'a aidé à identifier le problème:

Voici des instances supplémentaires du même modèle, avec des solutions similaires:

13
Will