我无法注册服务人员。该文件与 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);
})
})}
最佳答案
它不仅必须与 index.js 和 app.js 并存,还必须位于应用程序的根目录中。所以如果它碰巧你的 index.js 或 app.js 在一个文件夹中说 js,它不会工作。只需将 serviceWorker.js 与 index.html 放在同一目录中,然后在服务器中运行即可
这是为什么? 我不是这方面的专家,但我知道服务人员习惯于在离线场景中为您的所有文件提供服务。如果你把它作为一个相对路径,映射到外面的所有其他文件会很棘手。
虽然这不是规则,但您可以通过某种方式找到将 serviceWorker 放在某个子文件夹中的方法,但我个人认为这不是最佳做法
关于javascript - 如何注册 Service Worker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54939507/