我正在摆弄服务工作者并希望使用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);
我做错了什么?
答案 0 :(得分:0)
我不确定这是否正确,因为我在sw-toolbox online的教程中没有找到任何引用,但我找到了一个解决方法来导入它。
显然,服务工作者不像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却没有?