当前位置: 首页 > 面试题库 >

Node.js:获取调用者函数的文件名

羊舌勇
2023-03-14
问题内容

我想知道如何获取函数调用者的绝对路径?

可以这样说:

在文件中a.js我打电话b();
b()是file中定义的函数b.jsa.js要求b。那么,如何a.jsb.js节点中获取绝对路径?


问题答案:

这是一个如何使用stacktrace在节点中查找调用方文件的示例

function _getCallerFile() {
    try {
        var err = new Error();
        var callerfile;
        var currentfile;

        Error.prepareStackTrace = function (err, stack) { return stack; };

        currentfile = err.stack.shift().getFileName();

        while (err.stack.length) {
            callerfile = err.stack.shift().getFileName();

            if(currentfile !== callerfile) return callerfile;
        }
    } catch (err) {}
    return undefined;
}


 类似资料:
  • 问题内容: 这是来自三个文件的一些示例代码: 我需要动态获取调用方函数的文件路径,而无需传递任何额外的参数。 问题答案: 您需要弄弄的内部运作。请参阅:有关JavaScript Stack Trace API的Wiki条目 。 我已经对提议的提交中的某些代码进行了一些测试,它似乎可以工作。您最终会走上一条绝对之路。 以及一个包含模块的测试: 您将在控制台上找到的绝对路径。 说明 这不是一个“ no

  • 问题内容: 如何获得调用当前函数的函数的名称和行?我想要一个像这样的基本调试功能(使用npmlog定义): 当从另一个函数调用时,它将是这样的: 为了清楚起见,我想要的基本上与[ython中的类似: 是否有等效的Node来完成此任务? 问题答案: 您可以添加一些原型以提供从V8访问此信息的权限: 分别返回“ 28”和“ foo”。

  • 问题内容: 如果您有两个功能,例如: 并且A呼叫B,您能知道谁在B内部呼叫B时,例如: 问题答案: 您可以使用检查模块获取所需的信息。它的堆栈方法返回帧记录列表。 对于 Python 2, 每个帧记录都是一个列表。每个记录中的第三个元素是呼叫者名称。您想要的是: def f(): … print inspect.stack()[1][3] … def g(): … f() … g() g 对于 P

  • 问题内容: 我正在使用以下代码来获取JavaScript调用者函数的名称: 有没有办法发现调用该方法的行号? 另外,是否有办法获取调用该方法的JavaScript文件的名称?还是源URL? 问题答案: 这适用于我在chrome / QtWebView中

  • 问题内容: 我用Express 3在node.js中创建文件上传功能。 我想获取图像的文件扩展名。所以我可以重命名文件,然后将文件扩展名附加到它。 如何在node.js中获取图像的扩展名? 问题答案: 我相信您可以执行以下操作来获取文件名的扩展名。

  • 问题内容: 例如,方法调用方法。在方法中,如何获取文件名(我不想传递给方法)… 问题答案: 您可以使用该模块来实现此目的: