使用nodejs javascript或c++插件覆盖本机nodejs函数

Override native nodejs function with nodejs javascript or c++ addon

本文关键字:nodejs 覆盖 本机 函数 插件 c++ javascript 使用      更新时间:2023-10-16

我正在尝试覆盖nodejs的本机函数并使其全局化。(例如:控制台/要求)

以下是我的方法:


M1使用全局

myConsole.js

function myConsole() {
  var nativeConsole = console;
  // ... some code

}
myConsole.log = function() {
  nativeConsole.log('It works!');
}
global.console = myConsole; // <-- HERE

index.js

require('./myConsole.js');
require('./test.js');

test.js

console.log('Not working. :(');

这失败了。


M2直接分配

myConsole.js

function myConsole() {
  var nativeConsole = console;
  // ... some code

}
myConsole.log = function() {
  nativeConsole.log('It works!');
}
*console = myConsole; // <-- HERE

index.js

require('./myConsole.js');
require('./test.js');

test.js

console.log('Not working. :(');

这也失败了。


有人知道如何推翻它吗?谢谢

添加:我没有使用c++节点模块的经验,是否可以覆盖本机代码?

v8参考

在您的示例中,log函数无法访问nativeConsole变量。这需要改变。我也没有看到全局分配global.console = myConsole; 中有任何错误

您可以尝试这样做(这使您可以访问自定义函数中的nativeConsole变量):

function myConsole() {
  var nativeConsole = console;
  // ... some code
  return { 
      log : function() {
          nativeConsole.log('something');
      }
  }
}
global.console = myConsole;