首页 > 解决方案 > 你能临时修改一个内部的 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);

这可能吗?

标签: javascriptnode.jsnode-modulesfs

解决方案


使用 JavaScript 执行此操作的现代方法是通过代理对象。以下是文档中对它们的描述:

Proxy 对象用于定义基本操作的自定义行为(例如属性查找、赋值、枚举、函数调用等)。

这里:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy


推荐阅读