为什么不将 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")];

旁白提示:您可以从模块中导出一个函数,然后一次又一次地调用该函数,以便在每次需要时加载该模块得到类似的结果。