在反应中注册服务人员

Posted

技术标签:

【中文标题】在反应中注册服务人员【英文标题】:registering a service worker in react 【发布时间】:2019-08-22 02:26:07 【问题描述】:

我们的服务器设置如下,使用react、graphql、mongo和express:

public  
  index.html  
  service.js  
src  
  assets  
  client (has 2 client side js files)  
  components (for react)  
    game.jsx  
  server (graphql server)  
    server.js

我需要注册一个 Service Worker,以便我可以向玩家发送推送通知;调用来自 game.jsx(当我希望注册 serviceWorker 时加载的那个):

const swreg = await navigator.serviceworker.register('service.js');

这会导致对ourURL.com/service.js 的get 请求(因此我将service.js 置于public 之下,因为它是在其中提供服务的)

这很好,花花公子,但是我在 service.js 中不断收到导入错误:

Uncaught SyntaxError: Unexpected token 

这是 service.js 中的违规代码:

import  saveSubscription  from "src/queries/queries";

其中 saveSubscription 是一个 graphql 突变调用,在 src/queries/queries.js 中定义。

我尝试过其他形式的导入,但它们给了我某种语法错误。谷歌搜索告诉我,我需要一个 type="module" 标记,这显然不适用于这种情况。 我怎么解决这个问题?谢谢!

【问题讨论】:

【参考方案1】:

我修好了……有点。

我删除了导入行,而是在函数中使用了 fetch。

fetch(url, 
  method: "POST", // get can't have body
  'Content-Type': 'application/graphql',
  body: JSON.stringify(graphQLQuery)
);

【讨论】:

以上是关于在反应中注册服务人员的主要内容,如果未能解决你的问题,请参考以下文章

在 Web 应用程序中注册内联服务人员

Spring Cloud服务的注册与发现

Angular 7 - 未注册的服务人员

什么是服务注册?

spring cloud注册服务与发现(踩着坑往前爬)

在反应导航 5.x 中禁用导航回登录/注册屏幕