Получить трассировку стека Chrome объекта ошибки относительно sourceURL

При использовании Chrome я получаю сообщение об ошибке через средство запуска тестов Mocha, захваченное как часть afterEach с this.currentTest.err.

Я компилирую coffeescript с помощью браузера с опцией отладки, используя потрясающий плагин coffeeify. Это создает один скомпилированный файл bundle.js с sourceMappingURL=data:..., который позволяет мне напрямую просматривать и отлаживать оригинальный coffeescript.

К сожалению, когда я обращаюсь к err.stack в хуке afterEach Mocha, стек содержит ссылки на bundle.js, а не на соответствующие файлы .coffee, что было бы гораздо полезнее.

Вот пример кода с browserify.

Во-первых, установим его (для удобства) с помощью npm:

$ npm install -g browserify; npm install coffeeify

х.кофе

try
  throw Error("Thrown.")
catch err
  console.log err.stack

Преобразовать в x.js с помощью:

$ browserify -t coffeeify x.coffee -d > x.js

х.html

<html>
 <head>
   <script src='x.js'></script>
 </head>
 <body></body>
</html>

Если открыть его в Chrome, инструменты разработчика отобразят x.js, x.coffee (из sourceMapURL) и x.html.

Когда мы запускаем эту HTML-страницу, мы получаем следующий вывод в console:

Error: Thrown.
    at Error ()
    at Object. (file://localhost/Users/bmh/tmp/x.js:5:9)
    at i (file://localhost/Users/bmh/tmp/x.js:1:219)
    at err (file://localhost/Users/bmh/x.js:1:382)
    at file://localhost/Users/bmh/tmp/x.js:1:400 

Мы ожидаем, что трассировка будет ссылаться на файл .coffee, выглядящий примерно так (который я привожу здесь для наглядности):

Error: Thrown.
    at Error ()
    at Object. (file://localhost/Users/bmh/tmp/x.coffee:2:5)

Удалось ли кому-нибудь преобразовать стек ошибок в тот, который ссылается на элементы в местах их исходной карты?


person Brian M. Hunt    schedule 04.08.2013    source источник
comment
Возможно, это поможет: stackoverflow.com/questions/15419813/   -  person jcollum    schedule 08.08.2013
comment
Спасибо @jcollum - проблема аналогична. Проблема здесь в том, что перехваченный err.stack не содержит отображаемой строки и ссылок на источник. Когда необученная ошибка выводится на консоль, номера строк отображаются правильно (согласно предоставленной вами ссылке).   -  person Brian M. Hunt    schedule 08.08.2013


Ответы (1)


Я не уверен насчет coffeeify, но модуль source-map-support добавляет .stack поддержка кода в комплекте с browserify. Просто npm install source-map-support и поместите require('source-map-support').install() вверху вашего кода.

person constexpr    schedule 18.08.2013