Браузер: Идентификатор X уже объявлен
Я использую ES6 с Babel в моем проекте, и я получаю сообщение об ошибке, когда объявляю один из моих const
'use strict';
const APP = window.APP = window.APP || {};
const _ = window._;
APP.personalCard = (function () {
...
}());
ошибка
Uncaught TypeError: идентификатор "APP" уже объявлен
и это весь файл, у меня нет этого объявления в другом файле. Но я заявил, что var в верхней части других файлов.
Как вы думаете, что это должно быть?
Ответы
Ответ 1
Но я заявил, что var в верхней части других файлов.
Это проблема. В конце концов, это делает несколько деклараций для одного и того же имени в одной и той же (глобальной) области - что вызовет ошибку с помощью const
.
Вместо этого используйте var
, используйте только одно объявление в своем основном файле или только назначайте window.APP
исключительно.
Или сразу же используйте модули ES6, и пусть ваш модуль-загрузчик/загрузчик свяжется с ними, как ожидалось.
Ответ 2
Помните, что window
- это глобальное пространство имен. Эти две строки пытаются объявить одну и ту же переменную:
window.APP = { ... }
const APP = window.APP
Второе определение не разрешено в режиме strict
(включено с 'use strict'
в верхней части файла).
Чтобы устранить проблему, просто удалите объявление const APP =
. Переменная по-прежнему будет доступна, так как она принадлежит глобальному пространству имен.