2015-11-06 1 views
0

Я использую SystemJS и Babel для перевода кода ES6.Должна ли заброшенная ошибка в переданном с помощью Babel кодексе транслировать код или оригинал?

Если я поместил код console.log в свой код, в консоли Chrome Developer Tools я вижу ссылку на исходный файл благодаря исходным файлам (например: main.controller.js:9).

Если я передам код Error в код, трассировка стека в консоли вместо меня указывает на преобразованный код (например: main.controller.js!transpiled:20:17).

Это ожидаемое поведение или проблема с моими исходными картами?

ответ

0

Да, это ожидаемое поведение. Поведение Stacktrace не входит в спецификацию ES6, это скорее стандарт defacto, который был урегулирован. Точное поведение при подключении sourcemaps доходит до разработчика и браузера.

Хром специально прочитает исходную карту файла и отобразит отображаемую информацию при отображении неперехваченного исключения в консоли и при отображении информации о текущей трассировке выполнения, когда она находится в точке останова и совершает переход по коду. Значение ошибки .stack ошибки, которую вы получаете, если вы делаете console.log, не переводится Chrome и будет ссылаться на перенаправленные местоположения вывода.

Существуют проекты, такие как https://github.com/evanw/node-source-map-support, которые пытаются переопределить поведение по умолчанию .stack Chrome для преобразования ссылок на точку в исходном файле. Этот модуль часто используется при разработке для узла, поскольку Node не делает никакой собственной обработки исходного кода.

+0

Спасибо, Логан! Это отличный ответ. Я уже знал, что stacktraces не являются частью ES6 или других спецификаций, но я не знал о деталях, которые вы упоминаете о том, как Chrome обрабатывает разные случаи, и я нашел это очень интересным. –