Ошибка JS 'redeclaration' var, когда это первая строка в программе? - PullRequest
10 голосов
/ 28 сентября 2011

SCRPT5039: Redeclaration of const property line 1 character 1

line1: var editObj = null;

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

Ответы [ 8 ]

5 голосов
/ 08 февраля 2012

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

var window;

Я добавил это объявление, чтобы обойти ошибку узла при использовании следующего кода:

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

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

4 голосов
/ 15 января 2012

РЕДАКТИРОВАТЬ: Исправлено. Во всяком случае для меня. Я получил эту ошибку до ошибки объявления:

HTML1113: Document mode restart from Quirks to IE9 Standards 

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

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

3 голосов
/ 07 июня 2013

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

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

var screen;

Оказывается, IE9 уже имеет window.screen, с которым столкнулось это объявление, и переименование моего screen в eScreen устранило проблему.

Итак, мой ответ: не верьте указанию IE9 о том, где находится объявление!

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

1 голос
/ 23 марта 2019

Я тоже получал эту ошибку - проблема в том, что строка, на которой она запускается, полностью поддельная.Как и OP, это была ранняя строка в моем скрипте, которая была помечена:

        var h_combinedView = true;

Сообщение об ошибке очень вводит в заблуждение: " 0x800a041c - Ошибка времени выполнения JavaScript: Let / Const redeclaration "

Отмеченная строка не является определением const, и значение в ней определяется один раз во всем моем проекте, и никогда больше.

В конце концов я отследил проблему до фактического дублированного определения const,

const ve = { Normal: 'default', Search: 'search', View: 'view', Alts: 'ViewAlts', Edit: 'edit' }

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

Ничего подобного неточным сообщениям об ошибках, чтобы вынудить меняпройтись по моему коду.

:-)

1 голос
/ 06 мая 2016

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

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

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

1 голос
/ 06 марта 2013

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

0 голосов
/ 28 марта 2018

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

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

0 голосов
/ 04 декабря 2013

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

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

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

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

Обнаружено: приложение HTML5 / JS Window Store.

...