反应registerServiceWorker-安装事件

时间:2018-07-27 01:09:14

标签: reactjs service-worker

我正在使用React Web应用程序,并使用create-react-app进行了部署。有一个名为registerServiceWorker.js的文件,它负责初始化service worker。我想在install事件中缓存一些文件,但是self.addEventListener('install', event给我错误“意外使用'self'no-restricted-globals”。我设法通过将self更改为window来摆脱它,但是install事件从未被触发。如何在React中使用此“内置”服务工作者?还是可以创建其他服务工作者?

2 个答案:

答案 0 :(得分:0)

在自己奋斗之后,我终于找到了以下信息:

默认CRA项目中的#standardSQL SELECT customers.customer_id, customers.created_at AS customer, customers.orders_count, orders.created_at AS created_at, orders.order_number AS order_number FROM `shopxxx.shopify.customers` AS customers JOIN ( SELECT customer_id, ARRAY_AGG(STRUCT(created_at, order_number) ORDER BY created_at LIMIT 1)[OFFSET(0)].* FROM `shopxxx.shopify.orders` WHERE source_name != 'web' GROUP BY customer_id ) AS orders ON customers.customer_id = orders.customer_id WHERE customers.orders_count != 0 AND customers.created_at > "2018-09-12 00:00:00 UTC" AND customers.created_at < "2019-09-12 23:59:59 UTC" ORDER BY customers.created_at DESC 文件是 不是 ,与{{3 }}和Chrome。那不是serviceWorker.js语句的去向。他们进入由CRA的serviceWorker.js引用的文件 ,该文件由字符串

指定
service-worker.js

默认情况下,self.addEventListener是您无法访问或修改的文件!您将需要在const `swUrl = '${process.env.PUBLIC_URL}/service-worker.js'` 文件夹中创建自己的service-worker.js文件,并将其指向service-worker.js。它应该静态地以字符串形式指向该位置,这意味着它不会在构建过程中被集成,并且/public将正确地引用该模块而不是全局上下文。

答案 1 :(得分:-1)

我找到了简单的解决方案。该实用程序非常适合:https://github.com/bbhlondon/cra-append-sw

  

cra-append-sw

     

实用程序工具,用于将自定义代码附加到由Create创建的ServiceWorker   React App。

     

它允许保留默认的CRA配置(不弹出)。它   只需将自定义代码附加到CRA创建的ServiceWorker文件中   构建脚本。默认情况下,它使用非常基本的   Webpack + Babel配置(可以省略;请参阅选项)。

     

安装

     

$ npm install cra-append-sw --save

     

用法

     

“开始”:“反应脚本开始&& cra-append-sw --mode开发   。/custom-sw.js”,

     

“ build”:“反应脚本build && cra-append-sw   ./custom-sw.js”,