Node require 缓存

Alan

Alan

Maintainer of blog

在Node环境, 使用require多次加载模块时, 返回的都是同一个对象, 通过require.cache可以迭代查看所有require缓存的对象.

当你require("module.js")之后, 即便module.js文件发生了变化, 再次执行require("module.js")依然返回第一次require时的对象, 如果想要每次require都是module.js最新的对象, 可以把从require.cache中把module.js引用删除掉, 需要注意的是 require.cache 对象是个类似map的对象, key是module.js对于的绝对路径:

const path = require("path");
function requireAgain(absolutePath: string) {
if (typeof absolutePath !== "string") {
return null;
}
delete require.cache[absolutePath]
return require(absolutePath);
}
requireAgain(path.resolve("module.js")); // 注意这里要使用 path.resolve 拿到 module.js 的绝对路径

相关介绍 Clearing require cache