离线时,我的服务人员收到以下错误:
(unknown) #3016 An unknown error occurred when fetching the script
我的服务人员看起来像这样:
var version = 'v1'
this.addEventListener('install', function(event){
event.waitUntil(
caches.open(version).then(cache => {
return cache.addAll([
'https://fonts.googleapis.com/icon?family=Material+Icons',
'https://fonts.googleapis.com/css?family=Open+Sans:400,600,300',
'./index.html'
])
})
)
})
this.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(resp) {
// if it's not in the cache, server the regular network request. And save it to the cache
return resp || fetch(event.request).then(function(response) {
return caches.open(version).then(function(cache) {
cache.put(event.request, response.clone())
return response
})
})
})
)
})
它位于顶级目录,紧邻index.html中的清单导入:
<link rel="manifest" href="/manifest.json">
我在我的条目js文件中导入服务工作者。并在之后注册。
require('tether-manifest.json')
import serviceWorker from 'sw'
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register(serviceWorker)
.then(() => {
// registration worked
}).catch(error => {
throw new Error(error)
})
}
注册罚款。在我离线之前,我没有遇到错误。
我正在使用带有React的webpack,并在webpack中执行以下操作将我的sw.js文件复制到dist文件夹:
loaders: [
{ // Service worker
test: /sw\.js$/,
include: config.src,
loader: 'file?name=[name].[ext]'
},
{ // Manifest
test: /manifest\.json$/,
include: config.src,
loader: 'file?name=[name].[ext]'
}
]
错误未提供有关正在发生的事情的任何信息。
任何人都知道如何解决这个问题?
答案 0 :(得分:20)
我遇到了完全相同的问题,我花了一个小时试图找出它,结果发现我有一个另一个标签,因为同一个来源左边打开了(所以使用相同的共享服务工作者) )已选中“离线”复选框,并阻止其他标签因某种原因请求sw.js
。
似乎脱机状态从Service Worker范围内的选项卡泄漏,而其他选项卡没有正确反映或管理,而不是首先脱机的选项卡。
因此,请确保您没有其他客户端运行相同的服务工作者 - 您应该能够在DevTools中找到它们&gt;申请&gt;服务人员。
答案 1 :(得分:2)
在尝试其他操作之前,请检查您的 https证书无效或与您访问的网址不匹配。
例如就我而言,我试图使用已在另一个域中注册的证书访问https:// localhost。
虽然点击“继续”将允许我进入该网站,但此确切错误将被打印到控制台:
获取脚本时发生未知错误
答案 2 :(得分:0)
对我来说,当我在安装时将sw.js添加到缓存中时,此错误消失了。只是忘了那样做,但它解决了这个问题。
答案 3 :(得分:0)
我在Angular项目中工作时遇到了这个问题。我的问题是我使用的是Angular CLI的内置ng serve -prod
命令。
为了使它工作,我使用ng build -prod
然后使用http-server托管生成的dist文件夹
答案 4 :(得分:0)
答案 5 :(得分:0)
在我们的案例中,仅当Android上的Chrome 75 + Webview + Service Worker时才从2019年6月开始。这是完全相同的现象:https://bugs.chromium.org/p/chromium/issues/detail?id=977784