Cannot redeclare bloc d'étendue variable 'ngDevMode'
Mon application sur Angulaire 5. Voici comment le paquet.json ressemble
{
"name": "myapp",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^5.2.0",
"@angular/common": "^5.2.0",
"@angular/compiler": "^5.2.0",
"@angular/core": "^5.2.0",
"@angular/forms": "^5.2.0",
"@angular/http": "^5.2.0",
"@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "^5.2.0",
"@types/file-saver": "0.0.1",
"angular-2-dropdown-multiselect": "^1.6.0",
"angular2-csv": "^0.2.5",
"bootstrap": "^3.3.7",
"core-js": "^2.4.1",
"file-saver": "^1.3.3",
"ngx-bootstrap": "^1.9.3",
"ngx-clipboard": "^8.1.0",
"ngx-loading": "^1.0.14",
"ngx-pagination": "^3.0.0",
"ngx-toastr": "^6.4.0",
"rxjs": "^5.5.6",
"zone.js": "^0.8.19"
},
"devDependencies": {
"@angular/cli": "~1.7.0",
"@angular/compiler-cli": "^5.2.0",
"@angular/language-service": "^5.2.0",
"@types/jasmine": "~2.8.3",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "^4.0.1",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.1.2",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"typescript": "~2.5.3"
}
}
Tout va bien jusqu'à présent. Maintenant, j'ai besoin d'utiliser un datepicker dans mon application. J'ai donc installé angulaires-io-datepicker
npm install angular-io-datepicker --save
Maintenant, quand je fais un ng servir (à la suite notamment de la OverlayModule et DatePickerModule dans l'app.le module.ts ), il me donne l'erreur ci-dessous
ERROR in node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
node_modules/angular-io-overlay/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
Toutes les suggestions sur ce qui pourrait être mal et comment le résoudre? J'ai été plus tôt à l'aide de ce module avec succès Angulaire 4. Ensuite, j'ai mis à niveau vers Angulaire 5 et il s'est cassé. Maintenant, même si je la restauration angulaire 4, ce module me donne toujours le même problème.
OriginalL'auteur kayasa | 2018-02-22
Vous devez vous connecter pour publier un commentaire.
J'ai couru dans la même erreur, même si je pense que cela a été causé par une référence à un fichier d'enregistrement de fichier situé dans un autre projet. J'ai été en mesure de résoudre le problème en suivant les conseils donnés ici: github questions 24165. Plus précisément, j'ai ajouté ce qui suit à la
compilerOptions
dans letsconfig.json
fichier dans la racine de mon projet:Remarque: il peut être nécessaire d'utiliser
../node_modules
si votre chemin d'accès de base n'est pas vide.OriginalL'auteur Andy King
je peux voir la bonne réponse est déjà donné ,Mais je pense que la meilleure explication est nécessaire ce qui se passe avec la réponse.
dans le tsconfig.json
elle indique au compilateur de choisir "node_modules/@angulaire" angulaire version de l'application principale angulaire de la version) pour tous les événements, y compris: les bibliothèques
OriginalL'auteur Heshan
Angulaire 6
dans le tsConfig
si le baseUrl est src ensuite définir le chemin d'accès comme suit œuvres.
si le baseUrl est vide alors définir le chemin d'accès sans racine a fonctionné pour moi
"../node_modules/@angular/*"
) a fait le tour. sans elle, il ne fonctionne pasOriginalL'auteur user1288411
La bibliothèque
angular-io-datepicker
est toujours à l'aide angulaire^4.0.0
. Cette version incompatible avec l'angle de la version que vous avez projet est à l'aide de causes de l'erreur. La bibliothèque doivent avoir définipeerDependencies
au lieu de directement en fonction angulaire. Cela aurait causé votre mnp jeter peerDependency avertissements de disparité.L'angulaire de l'équipe, apparemment déplacé d'une variable à l'intérieur des fichiers et de l'incompatibilité de version maintenant à l'origine de la
ngDevMode
variable pour être déclaré plusieurs fois.Donc vous pouvez soit continuer à utiliser angulaire v4 ou utiliser un autre datepicker bibliothèque.
OriginalL'auteur Capricorn
Ce qui s'est passé pour moi aussi. Voici ce que j'ai fait pour le résoudre:
Dans ce scénario, nous avons deux @angulaire/core avec différentes versions!
Je viens de mettre à jour mon colis privés utiliser @angulaire/core version 7.1.0, et le problème résolu!
Ajoutant:
n'est pas nécessaire dans mon scénario.
En pleine discussion ici
OriginalL'auteur Vahid Farahmandian
J'ai eu ce problème après la mise à niveau de mon projet Angulaire 6. Le projet a l'aide d'une bibliothèque de mine publiée à l'aide Angulaire 5. J'ai mis à jour les sources de la bibliothèque Angulaire 6 et a publié une nouvelle version, de sorte que le problème a été résolu.
OriginalL'auteur Francesco Borzi
Je viens de tomber sur ce problème récemment et j'ai trouvé cette github question commentaire utile:
https://github.com/angular/angular/issues/21670#issuecomment-359273278
TL;DR :
Vous pourriez avoir à rétrograder votre Angulaire versions des paquets. Cela semble être un problème avec Angulaire 5.
OriginalL'auteur Niles Tanner
J'ai été en cours d'exécution dans la même question en utilisant Angulaire: 6.0.9.
Comme décrit par @Capricon j'ai été l'installation d'un package (ngx-accordéon-table version 1.0.10) qui n'était pas compatible avec mon Angulaire version. Le package est à l'aide Angulaire 5.2.0.
Nécessaires à la désinstallation de la node_module de mon angulaire du projet et la mondiale à mon domicile-dossier. Maintenant, il est à nouveau au travail.
OriginalL'auteur GuidoD
Pour moi ce qui s'est passé en raison des dépendances manquantes après une fusion/de mise à niveau. Vérifiez votre paquet.json n'est pas manque rien d'essentiel à votre projet de construction.
OriginalL'auteur Trujllo
TL:DR (Voir en bas de contournement)
Cause Probable
Avant de la Machine, MNP paquets pourrait utiliser toutes les variables globales qu'ils voulaient depuis MNP gère chaque paquet est portée à prévenir les conflits. Maintenant, avec Tapuscrit/Webpack, les importations sont regroupés et le potentiel de conflits se pose.
Fondamentalement, Tapuscrit/Webpack est de laisser vous savez que la même déclaration est faite au sein de la même portée plus d'une fois, ce qui pourrait être un problème. Cependant, ce Tapuscrit semble pas comprendre, c'est que MNP est la gestion de la portée, ce qui nous permet de faire de multiples déclarations d'un même objet, dans les différents packages/étendues et même en utilisant des versions différentes d'un même ensemble de personnes à charge.
Solution Correcte
La bonne solution est pour les lots importés de ne pas déclarer des variables globales ou de déplacer chaque dépendance "peerDependencies". Ce dernier n'est pas très réaliste, car il faudrait prévoir les applications consommatrices de savoir qui dépendances de chacun des besoins de dépendance... un cauchemar de gestion et l'ensemble du problème MNP adresses pour commencer.
Solution de contournement
Puisque nous n'avons pas toujours le contrôle sur les paquets de tierce partie et comment ils déclarent/exporter des objets, vous pouvez simplement ajouter la propriété suivante à la
tsconfig.json
fichier:Cela indique à la Machine à ignorer le double de déclarations.
OriginalL'auteur A-Diddy
J'ai eu le même problème avec 5.2.1.
Pour moi,
downgrading to 5.1.3
résolu pour l'instant.OriginalL'auteur Zohab Ali
Mon problème a l'installation du package qui avaient dépendance directe sur @angulaire/core
C'est la brève explication https://github.com/angular/angular/issues/21670#issuecomment-359752703
Copié à partir du lien fourni:
Ma solution a été de ne pas utiliser le package (ng-spinner)
OriginalL'auteur JanBrus
Essayez de supprimer le nœud courant des modules et de les installer de nouveau,
Utiliser "rm -rf node_modules" puis "npm je"
Aussi, assurez-vous que vous avez la bonne version de nœud modules si u ont de multiples versions de l'utiliser ensuite,
nvm utilisation
pour le résoudre.
Aussi, assurez-vous que votre local et le global angulaire de la CLI version est la même.
OriginalL'auteur Wilson Varghese