Я пытаюсь внедрить систему уведомлений на моем сайте. Поэтому я пытаюсь зарегистрировать работника службы, но не могу заставить его работать должным образом.
Я создал модуль со следующей компоновкой:
default. xml
<?xml version="1.0"?>
<page xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<script src="[Vendor_Module]::js/main.js"/>
</head>
</page>
А вот как я пытаюсь зарегистрировать своего работника (я следую учебному пособию от Google):
main. js
console.log('hello');
if ('serviceWorker' in navigator && 'PushManager' in window) {
console.log('Service Worker and Push is supported');
navigator.serviceWorker.register('sw.js')
.then(function(swReg) {
console.log('Service Worker is registered', swReg);
swRegistration = swReg;
})
.catch(function(error) {
console.error('Service Worker Error', error);
});
} else {
console.warn('Push messaging is not supported');
}
Я получил эту ошибку:
main.js:12 Service Worker Error TypeError: Failed to register a ServiceWorker for scope ('https://mywebsite') with script ('mywebsite/sw.js'): A bad HTTP response code (404) was received when fetching the script.
Итак, я попытался использовать путь stati c: /pub/static/frontend/Vendor/Theme/fr_FR/C/js/sw.js
, и он работает, но кажется хакерским. Есть ли лучший способ?
Вот мое дерево каталогов модулей:
Vendor/
└── Module/
├── etc/
│ └── module.xml
├── view/
| └── frontend/
| ├── layout/
| | └──default.xml
| └── web/
| └── js/
| ├── main.js
| └── sw.js
└── registration.php