为什么不将 NodeJS 模块缓存设置为 false 让 NodeJS 重新加载模块?
Why doesn't setting NodeJS module cache to false get NodeJS to reload module?
我有 2 个文件,一个名为 one.js,另一个名为 first.js。
one.js
var first = require("./first.js")
require.cache[first.module.id].loaded=false
require("./first.js")
first.js
console.log("First is running");
module.exports={module}
它的输出是:
First is running
而不是
First is running
First is running
如我所料。为什么我把first.js模块的加载属性设为false,还是没有重新加载?
您必须从 require.cache
对象中删除缓存的模块才能强制节点再次加载该模块。只要模块在 require.cache
.
中,Node 就不会执行该模块
从缓存中删除模块的一种方法如下所示:
delete require.cache[require.resolve("./first.js")];
旁白提示:您可以从模块中导出一个函数,然后一次又一次地调用该函数,以便在每次需要时加载该模块得到类似的结果。
我有 2 个文件,一个名为 one.js,另一个名为 first.js。
one.js
var first = require("./first.js")
require.cache[first.module.id].loaded=false
require("./first.js")
first.js
console.log("First is running");
module.exports={module}
它的输出是:
First is running
而不是
First is running
First is running
如我所料。为什么我把first.js模块的加载属性设为false,还是没有重新加载?
您必须从 require.cache
对象中删除缓存的模块才能强制节点再次加载该模块。只要模块在 require.cache
.
从缓存中删除模块的一种方法如下所示:
delete require.cache[require.resolve("./first.js")];
旁白提示:您可以从模块中导出一个函数,然后一次又一次地调用该函数,以便在每次需要时加载该模块得到类似的结果。