我正在使用SystemJS和Babel来转换ES6代码。
如果我console.log
在代码中加上,则在Chrome开发者工具的控制台中,由于有了源映射(即:),我看到了指向原始文件的链接main.controller.js:9
。
但是,如果我Error
在代码中抛出,则控制台中的堆栈跟踪会将我指向已编译的代码(即:)main.controller.js!transpiled:20:17
。
这是预期的行为还是我的源地图有问题?
是的,这是预期的行为。Stacktrace行为不是ES6规范的一部分,它更多是已经确定的事实上的标准。涉及到源映射时,确切的行为取决于开发人员和浏览器。
当在控制台中显示未捕获的异常时,以及在断点并逐步执行代码时显示有关当前执行跟踪的信息时,Chrome专门读取文件的源映射并显示映射的信息。在.stack
一个错误,如果你这样做,你得到的价值console.log
,不是由镀铬翻译,将引用transpiled输出位置。
像https://github.com/evanw/node-source-map-support这样的项目会尝试覆盖Chrome的默认.stack
行为,以将引用转换为指向原始文件。在为Node开发时,经常使用此模块,因为Node自身不进行任何源映射处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句