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