首页 > 解决方案 > Web Worker importScripts DOMException 脚本未能加载

问题描述

我正在尝试使用importScripts

self.addEventListener('fetch', event => {
  ...
  self.importScripts('idb.js');
  ...
}

为 PWA 的服务人员加载库,但不断获取

DOMException: Failed to execute 'importScripts' on 'WorkerGlobalScope': 
    The script at 'http://localhost:3000/idb.js' failed to load.

脚本文件在那里,内容类型正确,application/javascript我也试过text/javascript了。我的开发人员工具网络选项卡显示请求开始然后很快失败,没有机会访问服务器。状态码是(failed) net::ERR_CONNECTION_REFUSED通过 http 和(failed) net::ERR_FAILEDhttps 时。任何帮助表示赞赏

标签: javascriptservice-workerprogressive-web-appsweb-worker

解决方案


根据https://developers.google.com/web/updates/2018/10/tweaks-to-addAll-importScripts

在 Chrome 71 之前,可以在安装处理程序之外异步调用 importScripts()。从 Chrome 71 开始,这些调用会引发运行时异常(除非之前在安装处理程序中导入了相同的 URL),这与其他浏览器中的行为相匹配。

我必须移动importScripts到我的文件或我的安装处理程序的顶层并且它可以工作


推荐阅读