获取javascript中函数声明的路径
例如,给定获取javascript中函数声明的路径,javascript,Javascript,例如,给定 // foo.js function bar() { ... } 如何实现以下功能: function getPathOf(func) { return ... } console.log(getPathOf(foo.bar)) // Prints: "foo.js:1:1" 也就是说,如何获取给定函数的源文件路径、行号和列号 我知道Function.name给出了函数的名称,我也看到过诸如chai.js之类的断言库在打印堆栈跟踪时打印函数的路径。唯一公开当前行号
// foo.js
function bar() {
...
}
如何实现以下功能:
function getPathOf(func) {
return ...
}
console.log(getPathOf(foo.bar)) // Prints: "foo.js:1:1"
也就是说,如何获取给定函数的源文件路径、行号和列号
我知道Function.name给出了函数的名称,我也看到过诸如chai.js之类的断言库在打印堆栈跟踪时打印函数的路径。唯一公开当前行号和文件的表达式是
new Error
:
console.log((new Error()).stack);
这就是库生成堆栈跟踪的方式,没有其他方法可以获得它
我猜是这样的:
fs.readFileSync("foo.js").indexOf(func.toString())
可能会以某种方式工作,但这很难看,没有真正的用途。除非有办法使函数抛出一个错误,然后您可以使用该错误获取文件路径,否则我认为这是不可能的。