Я пытаюсь зарегистрировать работника сервиса на html-странице и получаю ошибку из заголовка.Я работаю над Linux, я имею право писать, удалять, изменять и так далее, (я на #).Я нахожусь на пути, как:
/var/www/a/b/c/d/e/f/project
И здесь у меня есть сервер node.js (index.js), HTML-страница (index.html) и работник службы (ServiceWorker.js)
Сервер node.js выглядит следующим образом:
const https = require('https');
const fs = require('fs');
var path = require('path');
const express = require('express');
const app = express();
const router = express.Router();
const pool = require('./mysqldb.js');
const pathView = __dirname + "/views/";
const IMGPath = "/public";
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'));
// This route will be used to print the type of HTTP request the particular
Route is referring to
router.use(function (req, res, next) {
next();
});
app.engine('html', require('ejs').renderFile);
app.get('/index.html',function(req,res){
res.render('/var/www/a/b/c/d/e/f/project/index.html');
});
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( listenPort )
});
//HTTPS
https.createServer(options, app).listen(8000);
И файл .html выглядит следующим образом:
<html>
<body>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('ServiceWorker.js', {
scope: './'
}).then(function (registration) {
var serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
document.querySelector('#kind').textContent = 'installing';
} else if (registration.waiting) {
serviceWorker = registration.waiting;
document.querySelector('#kind').textContent = 'waiting';
} else if (registration.active) {
serviceWorker = registration.active;
document.querySelector('#kind').textContent = 'active';
}
if (serviceWorker) {
// logState(serviceWorker.state);
serviceWorker.addEventListener('statechange', function (e) {
// logState(e.target.state);
});
}
}).catch (function (error) {
// Something went wrong during registration. The service-worker.js file
// might be unavailable or contain a syntax error.
console.log('Service Worker registration error : ' , error);
});
} else {
console.log('Please update your brower!');
// The current browser doesn't support service workers.
}
</script>
</body>
</html>
Я запускаю узел index.js (команда: "node index.js ") Все хорошо, страница загружается (я имею в виду скрипт со страницы), и я получаю следующую ошибку:
Service Worker registration error : TypeError: Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script.
И я не знаю, что делать.в основном файлы ServiceWorker.js, index.html и index.js находятся в одной и той же папке. Я пытаюсь запустить их, но каким-то образом путь неправильный ... Может кто-нибудь мне помочь?