0

我在摆弄服务人员,并想使用 sw-toolbox,它有一种支持快速样式路由的方法。但是,当我使用这些行的任何版本导入它时:

importScripts('node_modules/sw-toolbox/sw-toolbox.js');
importScripts('../node_modules/sw-toolbox/sw-toolbox.js');
importScripts('/node_modules/sw-toolbox/sw-toolbox.js');

我收到以下错误:

A bad HTTP response code (404) was received when fetching the script.

:3000/node_modules/sw-toolbox/sw-toolbox.js Failed to load resource: net::ERR_INVALID_RESPONSE

到目前为止,这是我的服务人员代码:

(global => {
    'use strict';

    //Load the sw-toolbox library
    importScripts('node_modules/sw-toolbox/sw-toolbox.js');


    //Ensure that our service worker takes control of the page asap
    global.addEventListener('install', event => event.waitUntil(global.skipWaiting()));
    global.addEventListener('activate', event => event.waitUntil(global.clients.claim()));
})(self);

我究竟做错了什么?

4

1 回答 1

0

我不确定这是否正确,因为我在 sw-toolbox 在线教程中没有找到任何对此的参考,但我找到了一种解决方法来导入它。

显然,服务工作者不像 module.import 那样工作,也就是说,相对于调用代码目录。所以我在我的服务器中添加了这个脚本:

  //serve the sw-toolbox
  server.get('/sw-toolbox.js', (req, res) => {
    res.setHeader('Cache-Control', 'no-cache');
    res.setHeader('content-type', 'text/javascript');
    let file = path.join(__dirname,  'node_modules', 'sw-toolbox', 'sw-toolbox.js');
    res.sendFile(file);
  });

并从服务人员那里调用它:

importScripts('/sw-toolbox.js');

谁能向我解释为什么这有效而 importScripts 无效?

于 2018-02-08T21:40:39.553 回答