访问nodejs上的function.caller

Mic*_*ael 8 javascript node.js

我有一个任务,依赖于function.caller来检查调用者是否被授权.

根据这个URL,所有主流浏览器都支持调用者...并且我的所有单元测试都通过:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/caller

但是,nodejs拒绝所有访问function.caller的尝试(将其报告为null).

我愿意接受有关在nodejs上工作的建议......我不想让这个框架只适用于浏览器.

谢谢!

eff*_*_it 11

Caller-id npm软件包使它像以下网站一样简单:https://www.npmjs.com/package/caller-id 来自文档:

var callerId = require('caller-id');

// 1. Function calling another function
function foo() {
    bar();
}
function bar() {
    var caller = callerId.getData();
    /*
    caller = {
        typeName: 'Object',
        functionName: 'foo',
        filePath: '/path/of/this/file.js',
        lineNumber: 5,
        topLevelFlag: true,
        nativeFlag: false,
        evalFlag: false
    }
    */
}
Run Code Online (Sandbox Code Playgroud)


msc*_*dex -3

您可以用来arguments.callee.caller获取调用者的引用。然而我相信它(仍然)已被弃用(尽管它的最终删除可能会在某些情况下导致问题,请参阅此处的讨论)并且您也错过了一些编译器/解释器优化。

例子:

function foo() {
  bar();
}

function bar() {
  console.log(arguments.callee.caller.name);
}

foo();

// outputs: foo
Run Code Online (Sandbox Code Playgroud)