GitHub Pages部署站点无法将OneSignal Service Worker文件放根目录报错问题
报错详情:
Installing service worker failed TypeError: Failed to register a ServiceWorker for scope ('https://username.github.io/') with script ('https://username.github.io/OneSignalSDKWorker.js?appId=<MY_APP_ID>'): A bad HTTP response code (404) was received when fetching the script.
问题原因
该报错是OneSignal默认从站点根目录请求Service Worker依赖的两个SDK脚本导致的,当对应文件没有存放在根目录路径下时,GitHub Pages会返回404错误,最终Service Worker注册失败。
解决方案
- 优先适配方案:将OneSignal提供的
OneSignalSDKWorker.js和OneSignalSDKUpdaterWorker.js两个文件上传到你的GitHub Pages仓库根目录,部署完成后即可直接解决问题。如果你的站点是通过前端框架自动构建生成,可以修改构建配置,将这两个文件打包输出到构建产物的根目录下即可。 - 无法存放根目录的自定义配置方案:如果你确实无法将文件放到根目录,可以修改OneSignal初始化配置,指定SDK文件的实际存放路径。
示例:假设你将两个SDK文件存放在站点的/static/onesignal/目录下,调整初始化代码如下:OneSignal.init({ appId: "替换为你自己的OneSignal应用ID", serviceWorkerPath: "/static/onesignal/OneSignalSDKWorker.js", serviceWorkerUpdaterPath: "/static/onesignal/OneSignalSDKUpdaterWorker.js", path: "/static/onesignal/" }) - Jekyll适配方案:如果你使用GitHub Pages默认的Jekyll构建模式,需要在仓库根目录创建一个名为
.nojekyll的空文件,避免Jekyll的文件过滤规则忽略你上传的SDK文件,导致路径正确仍返回404的问题。
内容的提问来源于stack exchange,提问作者Md Abdus Sami Akanda
相关产品推荐
相关产品推荐

