1

我正在尝试覆盖 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');

测试.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');

测试.js

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

这也失败了。


有谁知道如何覆盖它?谢谢。

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

v8 参考

4

1 回答 1

0

在您的示例中,log函数无法访问nativeConsole变量。这需要改变。我也看不出全局分配有什么问题global.console = myConsole;

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

function myConsole() {
  var nativeConsole = console;

  // ... some code

  return { 
      log : function() {
          nativeConsole.log('something');
      }
  }

}

global.console = myConsole;
于 2015-12-14T06:57:00.197 回答