Отслеживание строки источника ошибки в javascript eval

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

Если я Используя eval для оценки многострочного файла JavaScript, есть ли способ отследить, на какой строке происходит ошибка?

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

Пример:

try {
  eval("var valid_statement = 7; \n invalid_statement())))");
} catch(e) {
  var err = new Error();
  err.message = 'Error in Evald Script: ' + e.message;
  err.lineNumber = ???
  throw err;
}

Как я могу сказать, что ошибка произошла во второй строке? В частности, я заинтересован в том, чтобы сделать это в Firefox.

Я знаю, что у объектов ошибок есть e.stack в браузерах Mozilla, но вывод, похоже, не учитывает символы новой строки должным образом.

17
задан Jamie Wong 19 August 2010 в 22:50
поделиться

1 ответ

  • Номер строки в обработанном сценарии начинается с того, на котором eval включен.
  • Объект ошибки имеет номер строки, в которой он был создан.

Что-то вроде ...

try {
  eval('var valid_statement = 7; \n invalid_statement())))');
} catch(e) {
  var err = e.constructor('Error in Evaled Script: ' + e.message);
  // +3 because `err` has the line number of the `eval` line plus two.
  err.lineNumber = e.lineNumber - err.lineNumber + 3;
  throw err;
}
7
ответ дан 30 November 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: