我正在为 JavaScript 客户端代码创建一个日志子系统,并使用 babel 来预处理 ES2015 代码。我看到的获取源文件名和行号的唯一解决方案是基于从异常处理中获取调用堆栈。我想知道 Babel 或任何其他预处理器是否支持(或应该支持)某些东西符合旧的 C 预处理器概念“__ LINE__”和“__ FILE __”?如果存在的话我可以写:
mylog( "some text", anObject, __FILE__ , __LINE__)
babel 敬请提供
mylog( "some text", anObject, "mydir/myfile.js", 135)
在后处理文件中。我可以想象在调用 babel 之前编写一个 perl 脚本来执行此操作,但让 webpack、jspm 或 mocha 通过两个预处理器传输源代码可能超出了我的理解范围。
想法/建议?
最佳答案
对于多年后通过谷歌遇到这个问题的人来说,这是当前的解决方案:
npm 包 babel-plugin-transform-line会将 __line
转换为当前源代码行号和 babel-plugin-transform-dirname-filename会将 __filename
和 __dirname
分别转换为当前源文件名及其所在目录。
因此,安装了这些插件并将 babel 配置为使用它们后,您可以执行以下操作以获得预期结果:
mylog("some text", anObject, __filename , __line)
关于javascript - Babel Javascript源文件行号宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027135/