Je suis curieux de savoir s'il existe un bon moyen de décharger un module après l'avoir utilisé. J'ai des cas où j'ai besoin d'utiliser des modules qui apportent beaucoup de code, mais ils sont rarement utilisés (par exemple en tant qu'outil d'administration), mais j'hésite à les utiliser car après cela, ils gaspilleront probablement de la mémoire qui pourrait être meilleure utilisé ailleurs. Existe-t-il un moyen de les décharger, explicitement ou en permettant au système de le faire alors qu'ils n'ont pas été utilisés depuis un certain temps?
Réponse
Trop de publicités?Oui, il est possible d'accéder directement au cache du module:
var name = require.resolve('moduleName');
delete require.cache[name];
Notez que si votre code porte une référence à tout ce qui a été exposé par ces modules dont vous voulez vous débarrasser, il ne sera pas nettoyé.
(En aparté: sous la surface, require.resolve
et require.cache
sont que des proxy pour Module._resolveFilename
et Module._cache
respectivement, avec Module
étant le chargeur de module de base, c'est-à-dire require('module')
.)