javascript - 你能临时修改一个内部的 NodeJS 模块吗?
问题描述
我想暂时将一些中间件放入 FS 模块以记录来自 Node 的所有读/写活动,以便我可以执行以下操作:
const fs = require('fs');
const fsLogger = require('fs-logger');
const someModule = require('some-module');
fsLogger.bind(fs);
someModule.doMagic();
fsLogger.unbind(fs);
这可能吗?
解决方案
使用 JavaScript 执行此操作的现代方法是通过代理对象。以下是文档中对它们的描述:
Proxy 对象用于定义基本操作的自定义行为(例如属性查找、赋值、枚举、函数调用等)。
这里:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
推荐阅读
- javascript - 无法使用 XMLHttpRequest 从 rest api 获得响应
- r - 根据 R 中的滞后和超前值计算组的中位数
- azure - Azure Function ServiceBusTrigger 在几毫秒内多次触发同一条消息,无需第一次完成
- ios - iTC:版本发布 - 手动发布此版本
- java - 转换列表
到地图 > 使用 java 8 流 - scala - 带有案例类 scala 的列表
- phpstorm - 配置 Jest + Enzyme 在 PhpStorm 中运行测试?
- sql - Oracle触发器以防止在条件下插入新行
- javascript - 如何获得字符数限制,包括默认名称-Reactjs
- verilog - 将 Verilog 案例语句与连续赋值一起使用