清除需要caching
我试图从caching中删除一个模块,如这里所build议的 。
在我们阅读的文档中 :
require.cache
- 目的
当需要时,模块被caching在这个对象中。 通过从这个对象中删除一个键值,下一个要求将重新加载模块。
所以,我创build了一个名为1.js
的文件,其中包含一行:
module.exports = 1;
然后我需要通过node
shell:
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
它们。