Ошибка JS "redeclaration" var, когда это первая строка в программе?

SCRPT5039: Redeclaration of const property line 1 character 1

line1:var editObj = null;

Это начало файла, и я проверил, чтобы убедиться, что переменная не находится в других вызываемых файлах js. Это говорит о том, что я объявлю его позже? (если это так, что ссылка на строку не полезна) или что в этом плохого?

7 ответов


EDIT: исправлено. По крайней мере, для меня. Я получил эту ошибку до ошибки redeclaration:

HTML1113: Document mode restart from Quirks to IE9 Standards 

это говорит о том, что IE находит то, что он считает ошибкой, поэтому снова загружает страницу в режиме причуд. Загрузка страницы дважды заставляет думать, что все объявлено дважды. Поэтому решение состоит в том, чтобы найти то, что IE не понравилось.

сначала я пробежал страницу через онлайн HTML валидатор. Затем я запустил свой javascript через jsLint. После всего этого IE9 казался счастливым. И в качестве бонуса у меня есть код лучшего качества. Я надеюсь.


Я получил эту ошибку со следующим кодом:

var window;

я добавил Это объявление для обхода ошибки узла при использовании следующего кода:

if (!window) {
  //node-specific stuff
}

без вышеуказанного объявления узел wold жалуется. В конце концов, я решил скопировать / вставить, а не пытаться разделить один и тот же файл между реализациями узла и браузера.


у меня была аналогичная проблема с такой же ошибкой, но моя первая строка кода была alert(0); который я вставил, чтобы убедиться, что скрипт загружается! Интересно, что скрипт был загружено в соответствии с инструментами разработчика IE9, но первая строка никогда не выполнялась, и ошибка указывала на это alert(0); как повторное объявление. Я даже вставил строки и пробелы перед ним, и номер строки и символа соответственно изменился. Однако это (очевидно) не было тем, что объявлено заново, потому что это даже не декларация, не говоря уже о новой декларации!

Я удалил куски из конца скрипта, пока он выполнил alert(0); (указывая, что скрипт загружен и успешно проанализирован), и я обнаружил, что оскорбительная строка:

var screen;

получается ИЕ9 уже window.screen С которым столкнулось это заявление, и переименование мое screen to eScreen Исправлена проблема.

поэтому мой ответ: Не доверяйте IE9 указывает, где находится redeclaration!

(также стоит отметить, что скрипт отлично работал в своей первоначальной форме на IE7, IE8 и IE10, а не на IE9.)


У меня была та же проблема в моем коде, и оказалось, что IE показывает неправильную строку, появляется redeclaration. В моем случае это была история, которую я использую позже в коде. Вы должны проверить весь код для redeclaration констант. Вы можете попытаться прокомментировать часть кода и посмотреть, когда он выдает эту ошибку.


ошибка возникает, потому что вы объявили некоторую глобальную/локальную переменную, которая соответствует свойству браузера по умолчанию. Что-то вроде

var window = '';
var navigator = '';

Попробуйте удалить / комментировать такое объявление и посмотреть эффекты.


У меня была такая же ошибка и наткнулся на этот пост. Хотя у меня не было той же корневой проблемы, что и OP, я думал, что поделюсь своим решением, если другие совершат ту же ошибку и приедут сюда. Я получил ошибку в отдельном файле js. После упрощения я обнаружил, что могу генерировать ошибку из следующего кода:

var foo = null;
var bar = null;
var localData = null;

ошибка сказала, что это из первой строки. Однако фу не объявляли повторно. Проблема заключалась в том, что localData должен был использоваться в другом месте (не в моем коде.) Независимо от того, насколько глубоко в файле localData была объявлена ошибка, указанная как находящаяся в первой реальной строке кода.

Итак, если другие решения не работают, попробуйте переименовать каждую переменную в файле кода, чтобы определить, какая из них может вызвать проблему. Не верьте, что отладчик указывает на правую линию.

встречено: HTML5/JS Window Store приложение.


из-за ошибки при выполнении слияния git я обнаружил, что дважды включил скрипт в свой HTML. Таким образом, когда он запускал сценарий во второй раз, он переопределял переменную.

и это только дало мне ошибку для первого const, что сбивало меня с толку, когда я пытался удалить переменную или добавить другую в файл, это всегда давало мне ошибку для первой строки.