Рабочая среда SeriveWorker - nodejs и Express - PullRequest
0 голосов
/ 28 августа 2018

Я ищу ответ на мою проблему. Я тестирую сервисный работник из workbox с моим сервером 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:

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

EDIT

Не спрашивайте меня, почему, но проблема решилась, когда я добавил этот фрагмент кода в файл app.js, промежуточная сессия:

app.use(express.static(__dirname + '/views/pages'));

и внутри моей папки "pages" я помещаю свой файл sw.js. На самом деле, куда бы я ни положил свой файл sw.js, если он находится внутри целевого объекта папки с помощью _dirname.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...