当前位置: 首页 > 知识库问答 >
问题:

获取脚本时发生未知错误(服务工作者)

经嘉
2023-03-14

离线时,我的服务人员会出现以下错误:

(未知)3016获取脚本时发生未知错误

我的服务人员如下所示:

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
        })
      })
    })
  )
})

它位于顶层目录,就在索引中类似这样导入的清单的旁边。html:

我在我的条目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)
  })
}

天气很好。我在脱机之前不会遇到错误。

我正在使用Webpack与React,并在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]'
      }
]

这个错误没有提供任何关于正在发生什么的信息。

有人知道怎么解决这个问题吗?


共有3个答案

慕鸿波
2023-03-14

在尝试其他操作之前,请检查您的https证书是否无效或与您正在访问的url不匹配。

在我的例子中,我试图用另一个域名注册的证书访问https://localhost。

虽然点击“继续”将允许我进入该站点,但该错误将被打印到控制台:

获取脚本时发生未知错误

长孙兴德
2023-03-14

对我来说,当我在安装时将sw.js添加到缓存时,这个错误就消失了。只是忘记了这样做,但它解决了这个问题。

狄河
2023-03-14

我遇到了完全相同的问题,我花了一个小时试图解决这个问题,结果发现我在某个地方打开了另一个相同来源的选项卡(因此使用了相同的共享服务工作人员),该选项卡保留了“脱机”复选框,并阻止了另一个选项卡请求sw。出于某种原因。

似乎脱机状态正在从Service Worker作用域内的选项卡泄漏,而不是由首先脱机的选项卡以外的其他选项卡正确反映或管理。

因此,请确保没有其他客户机运行相同的服务工作者-您应该能够在DevTools中找到它们

 类似资料:
  • 我正在为我的angular 4项目使用https而不是https的服务工作者。但我得到了以下错误:服务工作者注册失败:DomeException:注册服务工作者失败:获取脚本时发生SSL证书错误。 这是我的service-worker.js 一个有棱角的cli。json:

  • 我注意到,当服务工作人员脚本本身加载到浏览器中时,不再触发服务工作人员的读取事件。例如,当我们有一个新版本的服务辅助角色时,旧的服务辅助角色读取事件不会被触发。因此,旧的服务工作者不能再检查新服务工作者的内容。 我确信这以前是可能的,我想知道这是否是一个bug,或者是否对此进行了任何更改。我在官方存储库或W3C草稿中没有找到与此更改相关的任何内容。 为了验证fetch事件没有被触发,我用版本号(参

  • 因此,我编写了一个gs函数,当有人在工作表中插入新行时,它会发送一封电子邮件。当用户手动插入数据时,它可以正常工作,但是该工作表也被通过API插入新行的服务帐户使用,在这种情况下不会触发编辑事件。 这是我正在使用的触发器 我作为表单的所有者创建了脚本和触发器,但这并没有解决任何问题,所以我没有主意了。

  • 我似乎时断时续地遇到这个问题。如果我拔下插头并重新插入设备并重新执行测试,则没有错误,但这只是暂时的修复,直到它再次出现。我有2个appium server实例,用于2台设备- appium版本-1.15.1 appium服务器控制台上的错误- IDE-上的错误- 设备所需的功能1- 设备的移动功能2- 非常感谢任何帮助!

  • 问题内容: 我在页面上有几个更新面板和jquery选项卡。另外,我正在更新面板上加载几个用户控件。用户等待几分钟后(未检查的时间约为40分钟)。当用户从“提交”按钮发送请求时,出现以下错误? 我无法解决此问题。但我相信。这是由Ajax引起的。大师,如果您知道解决方案。请告诉我。 问题答案: 当您有一个控件注册为多个更新面板中时,有时会出现此问题。 如果这不是问题,请尝试在脚本管理器声明之后立即添加

  • 我运行simple_test.rb,代码如下所示。iOS弯刀启动,并将值放入文本字段。但是当点击第一个按钮时。错误消息出来,即使我睡了一段时间,消息仍然是。 信息:[debug][INST]2015-11-04 09:54:53+0000 debug:从instruments获得新命令7:au.getElement('2').rect() 信息:[调试]套接字数据接收(83字节)信息:[调试]套接