使用nodejs javascript或c++插件覆盖本机nodejs函数
Override native nodejs function with nodejs javascript or c++ addon
我正在尝试覆盖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;
相关文章:
- 使用ios:ate写入到流会覆盖现有文件
- 我可以重新分配/覆盖std::字符串吗
- 叮叮当当在修复时插入多个"覆盖"说明符
- 谷歌模拟和覆盖关键字
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 使用子类覆盖基类中定义的函数
- 当覆盖存在时调用基本虚拟"binded to object"函数
- C++指针在 for 循环中被覆盖
- NodeJs 服务器充斥着 UDP 广播,不发送响应
- "main"函数堆栈中的对象在第一个任务运行时被覆盖 (FreeRTOS)
- 在nodejs中使用本机代码的最佳方法是什么?
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- 为什么我的全局 new() 覆盖被绕过了?
- 被覆盖的函数不会反映在基类中,这是正常行为吗?
- C++找出覆盖同一行的数组
- 专门化模板覆盖函数/避免对象切片
- 重写打印函数而不是覆盖基类
- C++中"覆盖功能的异常规范比基本版本更宽松"的奇怪错误
- 使用nodejs javascript或c++插件覆盖本机nodejs函数