При использовании 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)
Удалось ли кому-нибудь преобразовать стек ошибок в тот, который ссылается на элементы в местах их исходной карты?
err.stack
не содержит отображаемой строки и ссылок на источник. Когда необученная ошибка выводится на консоль, номера строк отображаются правильно (согласно предоставленной вами ссылке). - person Brian M. Hunt   schedule 08.08.2013