Javascript workbox serviceworker在除Chrome以外的任何地方工作:未捕获(承诺中)DomeException

Javascript workbox serviceworker在除Chrome以外的任何地方工作:未捕获(承诺中)DomeException,javascript,webpack,workbox,workbox-webpack-plugin,Javascript,Webpack,Workbox,Workbox Webpack Plugin,Workbox在Chrome上不起作用,但在其他任何地方都起作用, 这很讽刺,因为我相信这是一个谷歌图书馆, 显示的错误是: Uncaught (in promise) DOMException : sw.js line 1 铬: 歌剧院 火狐 我正在使用workbox网页包插件 webpack.config.js const workbox = require('workbox-webpack-plugin'); module.exports = {

Workbox在Chrome上不起作用,但在其他任何地方都起作用, 这很讽刺,因为我相信这是一个谷歌图书馆, 显示的错误是:

Uncaught (in promise) DOMException : sw.js line 1
铬:

歌剧院

火狐

我正在使用workbox网页包插件

webpack.config.js

    const workbox = require('workbox-webpack-plugin'); 

    module.exports = {
        plugins: [
            new workbox.GenerateSW({
                swDest: './service-worker.js',
                skipWaiting: true,
                clientsClaim: true
            })
        ]  
 }
index.ts(条目)

编辑:这是引发错误的代码行

编辑2: 它实际上在icognito模式下工作,删除浏览器数据仍然没有帮助

编辑3: 更新到最新的beta 1版本更糟糕,因为除了上一个错误之外,它还会显示另一个错误,然而,这个版本在Chrome的图标模式和其他浏览器中也能工作


您的软件文件的范围可能有误。试试这个:

if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/js/app/dist/service-worker.js', { scope: '/' });
  }); 
}
如果无法移动SW文件,则需要向后端添加特殊标头:

Server {

    listen www.example.com:443 ssl;

    ...

    location /js/app/dist/service-worker.js {
        add_header 'Service-Worker-Allowed' '/';
    }
}

(nginx配置)

如果浏览器超出分配的磁盘空间配额,通常会引发此错误。 您的“隐姓埋名”可以正常工作,因为它将分配新的磁盘配额,与普通选项卡共享相同的磁盘配额

您能否在devtools中打开
应用程序
选项卡并单击
清除存储>清除站点数据
?在大多数情况下,这将解决此问题


Chrome自动更新到72版,现在它适用于我和我的同事。
这很可能是一个固定错误。

作用域/引发异常,作用域“js/app/dist”的相同片段可以工作,但显示了上面所有的异常。使用
scope
引发的错误是什么?提供的作用域(“/”)的路径不在允许的最大作用域(“/js/app/dist/”)之下。调整作用域、移动服务工作者脚本或使用服务工作者允许的HTTP标头来允许作用域。从MDN:服务工作者将仅捕获来自服务工作者作用域下客户端的请求。服务工作人员的最大作用域是工作人员的位置。您还可以从后端添加一个头文件,这样您的软件似乎不在应用程序的根目录中。js/app/dist是正确的作用域,它是webpack生成文件的地方,但我只是尝试将其移动到/scope,它起了作用,但没有修复错误,icognito仍然像我说的那样工作。+1硬盘上可能没有足够的可用空间。在这种情况下,您的浏览器可能无法为缓存保留一些空间。您的意思是“未捕获(承诺)DOMEException:超出配额”,但在本期中并非如此。如编辑2中所述:我已经尝试删除数据,但没有成功。黄金在这一点上帮助我当它我只读了第一个答案,这是一直在这里。。。这是多么痛苦啊,我的硬盘里没有空间了!奇怪的是,它在Firefox中工作了……我删除了文件系统chrome配置文件夹中的
服务人员
目录,解决了这个问题。嗨,你有没有想过?我得到了完全相同的错误,在其他浏览器中工作&隐姓埋名。。已尝试删除所有缓存/历史记录-无效。。。有什么建议吗?没关系,让它起作用了。。。在chrome的“清除缓存”窗口中,转到“高级”选项卡,点击每个复选框,一直这样做,没有更多错误。。奇怪!Chrome进行了自我更新,现在已经为我和所有同事解决了问题。我现在有Chrome 72。我正在使用Chrome 72和4.0.0-beta.1/workbox-sw.js,但仍然存在同样的问题(在刷新页面两到三次后)。
Server {

    listen www.example.com:443 ssl;

    ...

    location /js/app/dist/service-worker.js {
        add_header 'Service-Worker-Allowed' '/';
    }
}