【发布时间】:2021-06-17 21:33:59
【问题描述】:
在创建基于 javascript 的 React 项目时,安装 Service Worker 只需将 index.jsx 上的 serviceWorker.unregister() 更改为 serviceWorker.register()。
有了这样的项目结构:
- src
|- index.jsx
|- serviceWorker.js
构建此代码后,/build 文件夹将如下所示:
- build
|- static
| |- css
| |- js
| |- media
|
|- index.html
|- service-worker.js
这将正常工作,并将导致 Service Worker 被正确注册。
另一方面,当在 Typescript 中设置项目时,给定相同的项目结构(js / jsx 文件是 ts / tsx),/build 看起来会有所不同类似的:
- build
|- static
| |- js
| |- bundled-js.chunk.js
| |- bundled-js2.chunk.js
| |- ..
|
|- index.html
看来 Typescript 构建了 serviceWorker 将它与所有其他 js 文件捆绑在一起。
这将导致 Service Worker 未注册,控制台中出现以下错误:
Error during service worker registration: DOMException: Failed to register a ServiceWorker for scope ('https://example.com/') with script ('https://example.com/service-worker.js'): The script has an unsupported MIME type ('text/html').
有错误的直播站点可以看到here;开源代码可以在here找到。
知道我做错了什么吗?
非常感谢任何提示,在此先感谢您!
【问题讨论】:
-
Typescript 不捆绑,你的捆绑器会,你在使用 webpack。?
-
啊,很高兴知道,我认为 ts 也可以作为捆绑程序工作 - 我想我还是可以的,因为该项目是使用
create-react-app创建的
标签: javascript reactjs typescript progressive-web-apps service-worker