¿Puede modificar un módulo interno de NodeJS temporalmente? [duplicar]

Nov 19 2020

Quiero poner algo de middleware en el módulo FS temporalmente para registrar toda la actividad de lectura / escritura del Nodo, para poder hacer algo como esto:

const fs = require('fs');
const fsLogger = require('fs-logger');
const someModule = require('some-module');

fsLogger.bind(fs);
someModule.doMagic();
fsLogger.unbind(fs);

¿Es esto posible en absoluto?

Respuestas

RandyCasburn Nov 18 2020 at 23:12

El enfoque moderno para hacer esto con JavaScript es a través de un objeto proxy. Aquí está la descripción de ellos de los documentos:

El objeto Proxy se utiliza para definir un comportamiento personalizado para operaciones fundamentales (por ejemplo, búsqueda de propiedades, asignación, enumeración, invocación de funciones, etc.).

Aquí:

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