我使用的是https而非https的服务工作者,用于我的angular 4项目。但我得到这个错误: 服务工作者注册失败:DOMException:无法注册ServiceWorker:获取脚本时发生SSL证书错误。
这是我的service-worker.js
module.exports = {
navigateFallback: '/index.html',
stripPrefix: 'dist',
root: 'dist/',
staticFileGlobs: [
'dist/index.html',
'dist/**.js',
'dist/**.css',
'dist/assets/image/**.*',
'dist/assets/image/client-home-carousel/**.*',
]
};
一个角色-cli.json:
"assets": [
"assets",
"favicon.ico",
"service-worker.js"
],
答案 0 :(得分:2)
Service Workers只能通过HTTPS连接使用。你在用它吗?此外,HTTPS证书必须有效。
作为旁注,您显示的代码不是您的service-worker.js。该代码是某些SW库的一些参数和选项,然后根据这些选项生成service-worker.js。很可能您的实际service-worker.js位于dist目录中,并作为构建过程的一部分进行更新。
答案 1 :(得分:0)
因此,正如头脑中提到的“服务工作者只能通过HTTPS连接使用”,
并且如果该特定DomException发生在本地,则当使用证书访问本地计算机上的Web资源时,这些最新版本的浏览器启动之一可能会有所帮助:
open -a Opera.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111
open -a Brave\ Browser.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111
open -a Google\ Chrome.app --args --user-data-dir=/tmp/foo --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:8111
Chromium浏览器未从这些设置开始,以允许克服此特定的DomException以便在本地将SSL与Service Worker一起使用。
此人也提供了有关此事的一些见解:https://deanhume.com/testing-service-workers-locally-with-self-signed-certificates/