如何从 ES6 JavaScript class 实例获取源代码位置?

How to get source code location from ES6 JavaScript class instance?

我想从我的对象树中生成一些代码。为了生成所需的导入语句,我需要从 class 实例中找出给定 class 的源代码位置。

我已经能够使用

获得预期的名称 MyClass
var name = instance.constructor.name;

但不是源代码位置

'/src/package/myClass.js'

=>如何操作?

对于 Java 它会像这里描述的那样工作:

Find where java class is loaded from

如果我使用 dir(constructor) 检查 Chrome 开发人员工具中的构造函数,我可以看到一些 属性

[[FunctionLocation]]: myClass.js:3

如果我将鼠标悬停在它上面,我可以看到想要的路径。我怎样才能以编程方式获得 属性?

编辑

刚发现[[FunctionLocation]]无法访问:

document.currentScript 适用于除 IE 之外的所有浏览器。你可以这样使用它:

var script = document.currentScript;
var fullUrl = script.src;

一个可能的解决方法似乎是调用

determineImportLocation(){
    var stack = new Error().stack;
    var lastLine = stack.split('\n').pop();
    var startIndex = lastLine.indexOf('/src/');
    var endIndex = lastLine.indexOf('.js:') + 3;
    return '.' + lastLine.substring(startIndex, endIndex);
}

MyClass的构造函数中并存储它以备后用:

constructor(name){
    this.name = name;
    if(!this.constructor.importLocation){
        this.constructor.importLocation = this.determineImportLocation();
    }                       
}

然而,这将需要修改我想要 import 的所有 classes。如果有不需要修改 class 本身的解决方案,请告诉我。