清除需要caching

我试图从caching中删除一个模块,如这里所build议的 。

在我们阅读的文档中 :

require.cache

  • 目的

当需要时,模块被caching在这个对象中。 通过从这个对象中删除一个键值,下一个要求将重新加载模块。

所以,我创build了一个名为1.js的文件,其中包含一行:

 module.exports = 1; 

然后我需要通过nodeshell:

 ionicabizau@laptop:~/Documents/test$ node > require("./1") 1 > require.cache { '/home/ionicabizau/Documents/test/1.js': { id: '/home/ionicabizau/Documents/test/1.js', exports: 1, parent: { id: 'repl', exports: [Object], parent: undefined, filename: '/home/ionicabizau/Documents/test/repl', loaded: false, children: [Object], paths: [Object] }, filename: '/home/ionicabizau/Documents/test/1.js', loaded: true, children: [], paths: [ '/home/ionicabizau/Documents/test/node_modules', '/home/ionicabizau/Documents/node_modules', '/home/ionicabizau/node_modules', '/home/node_modules', '/node_modules' ] } } # edited file to export 2 (module.exports = 2;) > require.cache = {} {} > require.cache {} > require("./1") // supposed to return 2 1 

那么,为什么当我的文件包含module.exports = 2并且清除caching时, require("./1")返回1

做了一些debugging,我看到有一个Module._cache对象在require.cache = {}时不会被清除。

require.cache只是一个暴露的caching对象的引用,这个属性不是直接使用的,所以改变它什么都不做。 您需要遍历键并实际delete它们。