我被分配到一个项目,他们有一个webpack离线插件在过去,但现在我们没有它,这是完全没有必要有它的项目。
它是这样安装的:
new OfflinePlugin({
updateStrategy: 'changed',
autoUpdate: 1000 * 60 * 10,
minify: {
removeComments: true,
collapseWhitespace: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeStyleLinkTypeAttributes: true,
keepClosingSlash: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
},
ServiceWorker: {
events: true,
navigateFallbackURL: '/',
},
})
现在我正在努力删除为生产域上的旧客户端创建的服务工人,这些客户端在离线插件被删除之前访问网站,最重要的是,每次我尝试再次刮取时,Facebookscraper工具似乎都会获得旧版本,这一点至关重要,因为我已经在生产中部署了新的SSR功能。
我已经尝试过:
webpack-remove-serviceworker-plugin
1.将以下代码添加到index.html
:
if (window.navigator && navigator.serviceWorker) {
navigator.serviceWorker.getRegistrations()
.then(function (registrations) {
let registrationsLength = registrations.length;
while(registrationsLength--) {
registrations[registrationsLength].unregister();
}
});
}
1.将sw.js
替换为以下内容:
self.addEventListener('install', function(e) {
self.skipWaiting();
});
self.addEventListener('activate', function () {
self.registration.unregister().then(function () {
return self.clients.matchAll();
}).then(function (clients) {
clients.forEach((client) => {
if (client.url && 'navigate' in client) {
client.navigate(client.url);
}
});
});
});
这些都没有解决我的问题。部署项目在一个新的服务器与另一个域的工作正常。任何提示或建议,这个问题?
3条答案
按热度按时间qlzsbp2j1#
我遇到了同样的问题,您需要将旧的sw.js(通过OfflinePlugin生成)替换为包含以下内容的sw.js:
这帮我赶走了一个老服务员。
sq1bmfud2#
至于我,我只是用一个新的不存在的范围服务工人来代替旧的,
至于app.js,我添加以下代码来注销旧的sw:
两个月后,几乎每个用户都在chrome中安装了新的sw.js,然后可以禁用离线插件,不影响用户
uqcuzwp83#
我已成功解决了与https://stackoverflow.com/a/25039719/1964570相关的问题
原来网站被转移到另一个主机,我们有一些ipv6 AAAA DNS记录,优先于新的ipv4记录,所以在删除它们(加上仍然保留那些解决方案,以删除服务工人),并在清除缓存和2-3刷新后,网站恢复正常运行,facebook刮擦也得到修复