You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Service Worker导入sw-toolbox时脚本评估失败,求排查方案

排查sw-toolbox脚本评估失败的问题

我来帮你捋捋这个问题!遇到「sw-toolbox script evaluation failed」错误,大概率是导入方式不对或者文件路径错误导致的,结合sw-toolbox的特性,咱们一步步排查:

1. 先确认导入方式是否正确

sw-toolbox是基于传统脚本环境设计的,现代浏览器的Service Worker默认是传统脚本模式,这时候你不能用ES模块的import语句,得用importScripts()来加载:

// 正确的导入方式(传统脚本模式)
importScripts('path/to/sw-toolbox.js');

如果你非要用ES模块的import,那必须在注册Service Worker的时候指定type: 'module'(主页面的注册代码):

// 主页面的Service Worker注册代码
if ('serviceWorker' in navigator) {
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/sw.js', { type: 'module' })
      .then(reg => console.log('SW注册成功:', reg))
      .catch(err => console.log('SW注册失败:', err));
  });
}

但要注意:sw-toolbox已经停止维护(最后更新是2017年),它本身没有提供ES模块版本,所以用ESimport很大概率会报错,更稳妥的还是用importScripts()。

2. 检查文件路径是否正确

浏览器找不到sw-toolbox的文件是常见的报错原因,你需要确保路径是相对于Service Worker文件的位置:

  • 如果你的sw.js和sw-toolbox.js都在网站根目录,直接写importScripts('sw-toolbox.js')
  • 如果sw-toolbox放在lib/子目录下,路径要写成importScripts('lib/sw-toolbox.js')

可以打开浏览器DevTools的「Network」面板,刷新页面后看sw-toolbox.js的请求状态:如果是404,那就是路径写错了,调整路径即可。

3. 版本兼容性问题

sw-toolbox的旧版本可能和现代浏览器的Service Worker API存在兼容性问题,建议使用它的最新稳定版本(v3.6.0),并且避免使用已经被废弃的API。如果实在解决不了,也可以考虑替换成更现代的Workbox(Google官方维护的Service Worker工具库,完全兼容Express风格路由,功能更完善)。

正确的示例代码

最后给你一个能正常运行的sw-toolbox使用示例:

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

// 定义Express风格的路由规则
toolbox.router.get('/api/:resource', toolbox.networkFirst, {
  cache: {
    name: 'api-cache',
    maxEntries: 50
  }
});

toolbox.router.get('/images/*', toolbox.cacheFirst, {
  cache: {
    name: 'image-cache',
    maxAgeSeconds: 86400 // 缓存1天
  }
});

内容的提问来源于stack exchange,提问作者Coco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:30:36