Puoi modificare temporaneamente un modulo NodeJS interno? [duplicare]

Nov 19 2020

Voglio mettere temporaneamente del middleware nel modulo FS per registrare tutte le attività di lettura / scrittura da Node, in modo da poter fare qualcosa di simile:

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

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

Ciò è effettivamente possibile?

Risposte

RandyCasburn Nov 18 2020 at 23:12

L'approccio moderno per farlo con JavaScript è tramite un oggetto proxy. Ecco la loro descrizione dai documenti:

L'oggetto Proxy viene utilizzato per definire il comportamento personalizzato per le operazioni fondamentali (ad esempio, ricerca di proprietà, assegnazione, enumerazione, invocazione di funzioni, ecc.).

Qui:

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