以编程方式显示Javascript函数文件名

时间:2015-12-19 19:12:49

标签: javascript node.js webdriver google-chrome-devtools tracing

我需要知道在javascript中调用变量或函数时是否有提取脚本名称的方法。该场景通过webdriver或节点运行chrome,当调用例如window.jQuery.Animation时,我想获得定义此函数的文件名(即jquery.js)。我知道在chrome中你可以点击'显示功能代码'并跳转到文件,但我希望以编程方式做同样的事情。

由于

2 个答案:

答案 0 :(得分:0)

在纯JavaScript中你没有这样做的方法。

不同的javascript引擎(spiderMonkey,V8,...)通常会以某种方式编译javascript代码,因此您将在此过程中丢失此类信息。

要知道函数的来源,您需要使用此函数的源映射。如果您不了解它们,源地图会将脚本映射到它的原始文件名/行号。

mozilla sourceMap库将为您提供帮助。

但是,您必须为使用jQuery的文件生成源映射。

如果你的script.js就像

var a = jQuery.method // this is line 10
        ^ col 9

你必须执行

var sourceMap = require('source-map');

consumer = new SourceMapConsumer('script.map');

consumer.originalPositionFor({ line: 10, column: 9 })

// { source: 'jQuery.js',
//   line: 12971,
//   column: 222,
//   name: 'whatever' }

然后,您将能够查询声明该对象的原始位置和文件名。

答案 1 :(得分:0)

也许Error对象可以在这里提供帮助:

var e = new Error;
console.log(e.stack);

堆栈的前两行:

Error
at Object.<anonymous> (/home/joost/src/test/testfile.js:3:9)