Navigateur: Identificateur X a déjà été déclaré
Je suis en utilisant ES6 avec Babel dans mon projet et j'obtiens une erreur lorsque je déclare un de mes const
'use strict';
const APP = window.APP = window.APP || {};
const _ = window._;
APP.personalCard = (function () {
...
}());
l'erreur
Uncaught TypeError: Identificateur 'APPLICATION' a déjà été déclaré
et c'est tout le fichier, je n'ai pas le déclarer n'importe où ailleurs dans ce fichier. Mais j'ai déclaré que la var dans le haut de l'autre des fichiers.
Que pensez-vous qu'elle devrait être ?
OriginalL'auteur Marcelo | 2016-03-21
Vous devez vous connecter pour publier un commentaire.
C'est ça le problème. Après tout, cela fait des déclarations multiples pour le même nom dans le même (global) champ d'application - qui lèvera une erreur avec
const
.Au lieu de cela, utiliser
var
, utilisez seulement une déclaration dans votre fichier principal, ou seulement affecter àwindow.APP
exclusivement.Ou utiliser ES6 modules tout de suite, et laissez votre module bundler/chargeur de traiter avec les exposer comme prévu.
OriginalL'auteur
Rappelez-vous que
window
est l'espace de noms global. Ces deux lignes de tentative de déclarer la même variable:La deuxième définition n'est pas autorisé dans
strict
mode (activé avec'use strict'
en haut de votre fichier).Pour résoudre le problème, il suffit de retirer le
const APP =
déclaration. La variable sera toujours accessible, car elle appartient à l'espace de noms global.window.APP =
est une mission, pas une déclaration. Il n'est même pas exécuté avant que la variable est déclarée.Ce n'est pas tout à fait exact. À l'échelle mondiale étendue de laisser/const déclarations dans un véritable ES6 de l'environnement ne pas ajouter une propriété à l'objet global, mais ils ne créer mondiale étendue de liaisons.
OriginalL'auteur
J'ai eu un très proche de la question, mais dans mon cas, c'était
Identifier 'e' has already been declared
.Dans mon cas, provoqués en raison de l'utilisation de
try {} catch (e) { var e = ... }
où la lettree
est généré via minifier (uglifier).Donc, la meilleure solution pourrait être d'utiliser
catch(ex){}
(ex
comme unExcemption
)Espère que quelqu'un qui a cherché avec la même question pourrait trouver cette question utile.
OriginalL'auteur