Node.js Nodejs:Override global.eval

Node.js Nodejs:Override global.eval,node.js,overriding,eval,nodejs-server,node-promisify,Node.js,Overriding,Eval,Nodejs Server,Node Promisify,有没有什么方法可以安全地超控eval?已尝试直接覆盖: var oldEval = global.eval; global.eval = function(){ // my logic global.a+=1; return oldEval.apply(this, arguments); } 这会产生以下参考错误: 引用错误:未定义createCallback 注意:这里的错误不是在重写时生成的,而是在调用eval时生成的。在其他情况下,这完全符合预期 请在此处找到问题

有没有什么方法可以安全地超控eval?已尝试直接覆盖:

var oldEval = global.eval;
global.eval = function(){
    // my logic
    global.a+=1;
    return oldEval.apply(this, arguments);
}
这会产生以下参考错误:

引用错误:未定义createCallback

注意:这里的错误不是在重写时生成的,而是在调用eval时生成的。在其他情况下,这完全符合预期


请在此处找到问题再现代码:

在某些调用eval的情况下,例如,在呈现ejs时,调用eval,这会抛出上述错误。这种情况可以在其他第三方库(如koa-send)中观察到。您能否给出一个调用
eval
抛出的代码的具体示例,因此我们有一个需要查看和调试的示例?正如前面所述,返回
oldEval
调用可能很简单,但观察到的问题是在某些第三方库的情况下。以下内容已从koa ejs中提取:
(函数readFile(){var self=this var len=arguments.length var multiArgs=true var lastType=typeof arguments[len-1]if(lastType==“function”)返回$$$\uuufn\uuuuu$$。apply(self,arguments)var args=new Array(len+1)for(var i=0;i
yes@sumit\u suthar确实如此,在大量研究中,我得出结论,猴子修补eval是不可行的,这是因为eval在内部调用解释器并重新构造词法范围。