Node.js 节点和模块缓存失效

Node.js 节点和模块缓存失效,node.js,swagger,Node.js,Swagger,我在Nodejs中读了很多关于模块缓存失效的内容,但仍然无法理解。 下面是一个简短的例子,我无法理解: //a.js var x=0; console.log('loaded'); exports.y = function() {}; //b.js var v1 = require('./a.js'); //displays "loaded" delete require.cache[require.resolve('a.js')]; var v2 = require('./a.js');

我在Nodejs中读了很多关于模块缓存失效的内容,但仍然无法理解。 下面是一个简短的例子,我无法理解:

//a.js
var x=0;
console.log('loaded');
exports.y = function() {};

//b.js
var v1 = require('./a.js');  //displays "loaded"
delete require.cache[require.resolve('a.js')];
var v2 = require('./a.js');  //DOES NOT display "loaded". WHY?
console.log(v1 === v2);  //displays false, so it's a different instance
基本上,我需要的是x在调用之间是一个不同的变量。 消息“loaded”不应该显示两次吗

提前感谢,, 加泰林

更新。
基本上,我在swagger(Rest services documentation generator)中需要这个功能,因为我想在不同的url上导出更多的API组,并且因为我发现唯一可以这样做的模块是swagger node express,所以它被创建为带有模块化变量的模块。因此,我需要以某种方式使其完全无效,以便能够从同一代码库生成更多文档。

这种行为确实很奇怪,我无法复制它;我看到两次都加载了
。您正在运行哪个版本的节点?当您一致地使用
/a.js
而不是
a.js
时,您是否看到相同的行为?如果您在模块中导出一个随机数会怎么样:您是否看到它在缓存失效之间发生变化?尝试过它,它对我有效-我使用的是节点版本0.10.21。这是我的一个错误:我正在清理子缓存(缓存子文件)并对require.resolve返回的对象执行删除操作,而不是对object.id(实际的键和完整路径文件名)执行删除操作。谢谢