2014-09-15 2 views
0

Я улавливаю ошибки JS, подписываясь на событие window.onerror, поэтому, если кто-то ловит ошибку «неопределенной переменной», я отправляю ее на сервер для целей отладки. Как вы знаете, это событие возвращает «сообщение об ошибке», «url» и «line», где произошла ошибка.Поймать ошибки JavaScript из сжатых файлов

Проблема в сжатых файлах.

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

Есть ли решение проблемы?

ответ

0

JavaScript компрессоры обычно делают две вещи:

  1. удалить все белые ненужным пространство («ненужным» с точки зрения синтаксической validaty).
  2. Сократите имена переменных, если это возможно. Это относится к локальным переменным, то есть к тем, которые не входят в глобальную область или элементы объекта.

Есть некоторые другие оптимизации, такие как функция вставки, но они обычно не так проблематичны.

Что касается первого пункта, вы можете запустить код через один из множества JavaScript source formatters. Это должно дать вам довольно читаемый файл JavaScript.

Что касается второго пункта, обфускация обычно не обратима. Если имена «говорящих», например, width, height или что-то изменилось на a или b, вы не можете знать, что они предназначены для выражения в первую очередь.

Если эта проблема относится к продукту с открытым исходным кодом, вы можете загрузить исходные файлы и попытаться восстановить проблему с ними.

Если это закрытый источник, и только «украшение» кода не помогает, вы должны написать отчет об ошибке поставщику.

0

Нет. В целях регистрации ошибок нет возможности «unminify» включить JavaScript.

Ваш лучший выбор - возможно, зарегистрировать Error Type в надежде, что это поможет вам отладить проблему.

Если вы действительно хотите перейти к определенному номеру строки, вам нужно будет удалить минимизацию и использовать кеширование браузера для достижения производительности.

0

Я думаю, вы могли бы использовать исходные карты ... Его файл, который может быть сгенерирован при минировании, и может использоваться для сопоставления строки/символа мини-файла с исходным исходным кодом.

http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

0

Лучший ответ по этому вопросу я нашел here

Malyw предполагает лет использования уродовать с max-line-len вариант и sourcemaps.
Это, вероятно, лучшее решение для определения точного места в коде

Смежные вопросы