Я пытаюсь добавить сервис-работника на сайт. Я использую Node.js с Express.js, Vue.js и EJS. ^
Мой сервер узлов (index.js) выглядиткак:
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
const router = express.Router();
const pool = require('./mysqldb.js');
const pathView = __dirname + "/views/";
var bodyParser = require("body-parser");
const listenPort = 8010;
// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// Process application/json
app.use(bodyParser.json());
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.use('/public', express.static('public'));
router.use(function (req, res, next) {
next();
});
// home
router.get('/', function (req, res) {
res.render( 'home.ejs', { msg:" > " });
});
app.use( "/", router);
// Not found
app.use("*",function(req,res){
res.setHeader('Content-Type', 'text/html');
res.status(404).send('Page introuvable !');
});
// Run server
app.listen(listenPort, function () {
console.log('Example app listening on port ' + listenPort )
});
И файл home.ejs выглядит так:
<!DOCTYPE html>
<html lang="en">
<body>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('ServiceWorker.js').then(function(registration) {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
//registration failed :(
console.log('ServiceWorker registration failed: ', err);
});
}else {
console.log('No service-worker on this browser');}
</script>
</body>
</html>
Я должен упомянуть, что я тестирую его на https.Я не думаю, что содержание ServiceWorker.js имеет такое значение, но если вам понадобится помощь, я тоже могу опубликовать его.Схема файлов сервера будет выглядеть следующим образом:
index.js
mysqldb.js
public //(folder)
views /*(folder)*/ : home.ejs , ServiceWorker.js
И когда я открываю веб-сайт по https, я получаю следующую ошибку в веб-консоли:
ServiceWorker registration failed: TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.