我想为异常堆栈跟踪实现自己的格式,我知道Error.prepareStackTrace
就像魅力一样。
当我通过coffee
运行程序来使用coffee-script时出现问题,而不保存中间* .js结果及其源映射文件。我想从.coffee文件中显示正确的行号,而不是来自已编译的.js
是否可以通过require在运行时动态加载的文件中访问coffee-script的内部运行时sourceMaps(或获取相同的值)?我知道在sourceMaps = {}
中有一个局部变量coffee-script.coffee
,由咖啡脚本编译器本身使用,但在模块闭包之外无法访问它。
有什么想法吗?
答案 0 :(得分:0)
这是我运行simplenested.coffee
时包含require 'simpleerror.coffee'
的堆栈跟踪。至少在1.6.3
中,使用两个文件的sourceMaps。中间是loadFile
的行。如果事先编译了任一文件,相关的框架行将引用Javascript代码。
2011:~/myjs$ coffee simplenested.coffee
ReferenceError: x is not defined
at foo (/.../simpleerror.coffee:4:7)
at Object.<anonymous> (/.../simpleerror.coffee:7:1)
at Object.<anonymous> (/.../simpleerror.coffee:2:1)
at Module._compile (module.js:456:26)
at Object.loadFile (/.../coffee-script/lib/coffee-script/coffee-script.js:182:19)
at Module.load (/.../coffee-script/lib/coffee-script/coffee-script.js:211:36)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/.../simplenested.coffee:2:8)
at Object.<anonymous> (/.../simplenested.coffee:1:1)
at Module._compile (module.js:456:26)
simplenest.coffee
require 'coffee-script'
nested=require './simpleerror'
simpleerror.coffee
foo = () ->
y = 'testing'
y = x # expect ReferenceError
return y
foo()
答案 1 :(得分:0)
是的,您可以通过require&#34; source-map&#34;。
使用sourceMap然后你应该在stackTrace中获取filePath,line和column信息进行转换。
凯文写了咖啡库。
npm install coffeestack
用法:
{convertStackTrace} = require 'coffeestack'
try
throw new Error('this is an error')
catch error
console.error(convertStackTrace(error.stack))
更多细节请参阅CoffeeStack包。