新手求问关于代码热更新和缓存清理的问题
新手一枚,现在在尝试写一个electron桌面程序,其中有一个类的代码有可能在程序使用中发生变化,因此把它写成了r=require.reslove(‘这个类的js文件路径’)的形式然后使用delete require.cache[r]; r = require.reslove(‘这个类的js文件路径’) 删除掉缓存再重新require期望能够不用重启程序就改变这一部分。但是从最终的效果来看这个类并没有发生变化。希望各位大神能不吝指点一下我正确的处理方式
2 回复
可以参考一下这段代码
function clearCache(modulePath) {
let moduleOld = require.cache[modulePath]
if (moduleOld && moduleOld.parent) {
moduleOld.parent.children.splice(moduleOld.parent.children.indexOf(moduleOld), 1)
}
delete require.cache[modulePath];
}
function clearDirCache(moduleDirPath) {
let stat = fs.statSync(moduleDirPath);
if (stat.isDirectory()) {
let filenameList = fs.readdirSync(moduleDirPath);
for (let i = 0; i < filenameList.length; i++) {
const filename = filenameList[i];
clearDirCache(path.resolve(moduleDirPath, filename));
}
} else if (stat.isFile()) {
clearCache(moduleDirPath)
}
}
@cn-ix 好的,我尝试了一下您的方法,确实起到了我所期望的效果,十分感谢