清除需要缓存

时间:2014-05-15 18:24:39

标签: node.js caching

我正在尝试将缓存中的模块删除为suggested here

在我们阅读的documentation中:

  

require.cache

     
      
  • 对象
  •   
     

模块在需要时缓存在此对象中。 通过从此对象中删除键值,下一个需要将重新加载模块。

因此,我创建了一个名为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

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

进行一些调试时,我发现有一个Module._cache对象在require.cache = {}时没有被清除。

1 个答案:

答案 0 :(得分:30)

require.cache只是一个公开的缓存对象引用,不直接使用此属性,因此更改它不会执行任何操作。您需要迭代密钥并实际delete