如何注册服务人员?

时间:2019-03-01 07:00:24

标签: javascript reactjs service-worker

我无法注册服务人员。该文件与index.js和app.js一起位于。我收到下一个错误

A bad HTTP response code (404) was received when fetching the script.

Failed to load resource: net::ERR_INVALID_RESPONSE

Registration failed TypeError: Failed to register a ServiceWorker: A 
bad HTTP response code (404) was received when fetching the script.

****** 
    if ('serviceWorker' in navigator) {
        window.addEventListener('`load`', () => {
        navigator.serviceWorker.register('serviceWorker.js', { scope:'./' })
            .then((registration) => {
                console.log('Registration completed successfully',registration);
            })
            .catch((error) => {
                console.log('Registration failed', error);
            })
     })}

2 个答案:

答案 0 :(得分:1)

它不仅必须与index.js和app.js并存,而且还必须位于应用程序的根目录中。因此,如果发生这种情况,那么您的index.js或app.js位于js之类的文件夹中,它将无法正常工作。只需将serviceWorker.js与index.html放在同一目录中,然后在服务器中运行

这是为什么? 我不是专家,但是我知道服务工作者习惯于在离线场景中提供所有文件。如果将其作为相对路径,则很难映射到外部的所有其他文件。

这不是规则,您可以通过某种方式找到将serviceWorker放在某个子文件夹中的方法,但我个人认为这不是最佳实践

答案 1 :(得分:0)

服务人员用于缓存资产和其他文件,以便在网络速度慢或用户脱机的情况下可以在屏幕上呈现结果。这样可以带来更好的用户体验。

有关您可能要访问的详细信息:- https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API

这是在index.js上完成的,如果您使用的是最新的CRA版本,则只需将最后一行从serviceWorker.unregister();修改为serviceWorker.register();