我正在尝试在ribs.js项目中实施Web Worker,但收到错误消息 src / js / worker.js 404(未找到)
我创建了一个worker.js文件,并且文件中包含以下代码
this.addEventListner('message', function(e){
console.log('Message received: ', e.data);
});
下面的代码向工作人员发送消息
let worker = new Worker('src/js/worker.js')
worker.postMessage('hello');
有人可以让我知道我在做什么错吗?谢谢!
答案 0 :(得分:0)
似乎您尝试从不安全的位置加载服务工作程序脚本。我建议您从http://localhost
开始为您的开发页面服务,以与服务工作者一起迈出第一步。您可以在"Is ServiceWorker Ready?"网站上找到一个不错的“指南”。
请确保您:
localhost
一起使用。如果没有有效的证书,您将无法从http
或https
协议加载服务工作者脚本。从http://localhost
为您服务的网页是一个例外; localhost
被认为是安全的,可以使开发更容易。另请参见the full list of "secure" origins as implemented in Chrome。
如果文件丢失或浏览器无法从使用的协议中加载文件,您将收到相同的错误
A bad HTTP response code (404) was received when fetching the script.
Failed to load resource: net::ERR_INVALID_RESPONSE
ServiceWorker registration failed: TypeError: Failed to register a ServiceWorker:
A bad HTTP response code (404) was received when fetching the script.
如果您网站的SSL证书(包括自签名证书)无效,则会出现以下错误:
An SSL certificate error occurred when fetching the script.
Failed to load resource: net::ERR_CERT_DATE_INVALID
ServiceWorker registration failed: DOMException: Failed to register a ServiceWorker:
An SSL certificate error occurred when fetching the script.
如果使用自签名证书,则可以install the SSL certificate of your "fake" CA as a trusted root certificate authority in your web browser或OS。浏览器不会再询问您访问页面的例外情况,并且服务人员将很好地加载。
如果您使用的是Chrome,则可以使用参数--unsafely-treat-insecure-origin-as-secure
和--allow-insecure-localhost
强制浏览器进入load the service worker script from otherwise illegal origins。但是只能在您的开发环境中执行此操作。不在生产网站上。