Рабочая среда SeriveWorker - nodejs и Express
Я ищу ответ на мою проблему. Я тестирую работника сервиса на своем сервере nodeJs. Я протестировал с базовой конфигурацией, как показано ниже:
Базовый nodeJs app.js
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req, res) {
if (req.url === "/") {
fs.readFile('index.html', function (err, data) {
if (err) throw err
res.writeHead(200, {
'Content-type': 'text/html;charset=utf-8'
});
res.end(data);
});
} else if (req.url === '/sw.js') {
fs.readFile('sw.js', function (err, data) {
if (err) throw err
res.writeHead(200, {
'Content-type': 'text/javascript'
});
res.end(data);
});
}
});
server.listen(8080);
Мне удалось поместить мои файлы в кеш и заставить его работать в автономном режиме. Но проблемы начались, когда я попытался использовать модуль Express:
Экспресс nodeJs app.js
var express = require('express');
var app = express();
app.listen(8080);
//*****************************************************************
//-------------------------- TEMPLATES --------------------------
//*****************************************************************
//moteur de modèles ou de templates
app.set('view engine', 'ejs');
//*****************************************************************
//-------------------------- MIDDLEWARE --------------------------
//*****************************************************************
app.use('/static', express.static(__dirname + '/public'));
//*****************************************************************
//--------------------------- ROUTES ------------------------------
//*****************************************************************
app.get('/', function (request, response) {
response.render('./pages/index.ejs');
});
Мне удается поместить мои файлы в кэш, но мне не удается заставить его работать в автономном режиме. В чем причина этой разницы?
sw.js
importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.4.1/workbox-sw.js');
if (workbox) {
console.log(`Yay! Workbox is loaded `);
} else {
console.log(`Boo! Workbox didn't load `);
}
workbox.precaching.precacheAndRoute([
{ url: '/', revision: '383676' }
]);
+-node_modules
+-public
+-js
sw-register.js
sw.js
+-css
+-views
+-pages
index.ejs
server.js
РЕДАКТИРОВАТЬ
Не спрашивайте меня, почему, но проблема решилась, когда я добавил этот фрагмент кода в файл app.js, промежуточная сессия:
app.use(express.static(__dirname + '/views/pages'));
и внутри моей папки "pages" я помещаю свой файл sw.js. Фактически, независимо от того, куда я помещаю свой файл sw.js, пока он находится внутри целевой папки _dirname
,