我希望这个问题没有被问过太多次。 因此,我想在我的React项目中创建自己的服务工作者文件。 我将其称为“ sw.js”,并将其放在src /文件夹中,该文件夹包含包含所有jsx的“ index.js”文件。 React项目的架构是:
页面加载后,服务人员应在浏览器中注册。 但是,在Firefox上,出现以下错误: “无法为范围'http://localhost:3000/注册/更新ServiceWorker:错误的内容类型为脚本'http://localhost:3000/sw.js'收到的'text / html'。必须是JavaScript MIME类型。”
“服务人员错误DOMException:“操作不安全。”
我知道错误不是来自注册服务人员本身的代码,因为它在没有任何反应的标准项目上工作
这是在index.js中注册服务工作者的代码:
render(){
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
console.log('Service Worker and Push is supported');
navigator.serviceWorker.register('/sw.js')
.then(swReg => {
console.log('Service Worker is registered', swReg);
this.setState({ swReg : swReg } )
// TODO 3.3a - call the initializeUI() function
})
.catch(err => {
console.error('Service Worker Error', err);
});
});
}
如您所见,我将其放在主要的React组件的render方法中