在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 的绝对路径