通过轮询访问manifest.json文件中的版本号,与缓存中的版本号进行比较,如果版本号相同则不进行其他操作,如果不同则将新版本号存入到缓存中,并且清空缓存,跳转到登录页。
每次发布的时候都需要更改版本号然后上传代码。
1、在项目中的public文件夹下的manifest.json文件中添加如下代码
"version": "1.0.1"
2、在入口文件中添加轮询,获取当前的版本号,并和旧版本号进行比较,如果是相同的不做处理,如果不相同将旧版本号替换为新的版本号
setInterval(() => {
fetch('http://你要的服务器地址:端口/manifest.json')
.then((response) => response.json())
.then((data) => {
const VUE_APP_VERSION = data.version;
const vers = window.localStorage.getItem('appVersion');
if (VUE_APP_VERSION != vers) {
localStorage.clear();
sessionStorage.clear();
window.localStorage.setItem('appVersion', VUE_APP_VERSION); //将新版本号放入到缓存中
window.location.href = '/#/login';
window.location.reload();
}
})
.catch((error) => {
});
}, 5000);//设置5秒一轮询
3、在config-override.js中添加如下代码,修改js文件的版本号,使每次发布的js文件拉取最新的
config.output.filename = 'static/js/[name].js?v=' + new Date().getTime();
config.output.chunkFilename =
'static/js/[name].chunk.js?v=' + new Date().getTime();