获取节点js中的类初始化位置路径

brc7rcf0  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(245)

此问题已在此处找到答案

nodejs:获取调用函数的文件名(8个答案)
如何在node.js中获取调用方函数的文件路径((6个答案)
两天前关门了。
我在文件中有一个类:

// file: MyClass.js

class MyClass {
    constructor() {
        ...
    }
    ...
};

export default MyClass;

在另一个文件(另一个目录)中:

// file: SomeFile.js

import MyClass from <file_path>;

const instance = MyClass();

我想得到示例初始化的位置,我想在类本身中得到它。。也许是这样的:

// file: MyClass.js

class MyClass {
    constructor() {
        this.instPath = getInstPath(); // => string of the SomeFile.js path
        ...
    }
    ...
};

export default MyClass;

我想在不传递类示例中的任何参数的情况下获得这个字符串路径,有什么想法吗?

nr7wwzry

nr7wwzry1#

您可以通过错误调用堆栈获取执行路径信息。下面是的示例代码 getInstPath :

import url from 'url'

function getInstPath() {
    const stack = new Error().stack;
    // The 1st line is `Error`
    // The 2nd line is the frame in function `getInstPath`
    // The 3rd line is the frame in `MyClass` calling `getInstPath`
    // So the 4th line is the frame where you instantiate `MyClass`
    const frame = stack.split('\n')[3];
    const fileUrlRegExp = /(file:\/\/.*):\d+:\d+/g;
    const fileUrl = fileUrlRegExp.exec(frame)[1];
    return url.fileURLToPath(fileUrl)
}

但我确实认为最好在导入程序文件中使用 __filenameimport.mata.url 在构造函数中。

相关问题