Итак, у меня уже есть приложение Vue, и я хочу добавить PWA.Я установил @ vue / cli-plugin-pwa , и после первой сборки мои registerServiceWorker.js (в src) и manifest.json (в открытом доступе) были созданы автоматически и, кажется, работают нормально.Но, насколько я понимаю, он должен также генерировать services-worker.js в моей папке dist после запуска npm run build.Если я загружаю файлы сборки на сервер, я получаю
A bad HTTP response code (404) was received when fetching the script.
Failed to load resource: net::ERR_INVALID_RESPONSE
Error during service worker registration: TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
Это также происходит, если я создаю пользовательский service-worker.js
Как я добавил пользовательский service-worker.js
1: Создан service-worker.js в папке src
// service-worker.js
console.log('Service Worker Registered!')
2: Создан vue.config.js в ~ /
// vue.config.js
module.exports = {
// ...other vue-cli plugin options...
pwa: {
name: 'My App',
themeColor: '#4DBA87',
msTileColor: '#000000',
appleMobileWebAppCapable: 'yes',
appleMobileWebAppStatusBarStyle: 'black',
// configure the workbox plugin
workboxPluginMode: 'InjectManifest',
workboxOptions: {
// swSrc is required in InjectManifest mode.
swSrc: './src/service-worker.js',
// ...other Workbox options...
}
}
}
Если я запускаю npmпри сборке с использованием service-worker.js он по-прежнему не создает service-worker.js в моей папке dist и выдает те же ошибки при загрузке на сервер.Сервер является сервером с поддержкой https.я что-то упускаю или неправильно понимаю?заранее спасибо.
Редактировать: я также получаю ту же ошибку, если вручную добавляю файл service-worker.js в папку dist
registerServiceWorker.js
import { register } from 'register-service-worker'
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
ready () {
console.log(
'App is being served from cache by a service worker.\n' +
)
},
registered () {
console.log('Service worker has been registered.')
},
cached () {
console.log('Content has been cached for offline use.')
},
updatefound () {
console.log('New content is downloading.')
},
updated () {
console.log('New content is available; please refresh.')
},
offline () {
console.log('No internet connection found. App is running in offline mode.')
},
error (error) {
console.error('Error during service worker registration:', error)
}
})
}