我使用Firebase向我的Angular应用发送推送通知。
我是按照本教程进行的:
当我在localhost尝试时一切正常。
问题是我部署它是因为我在文件夹中进行部署,但是服务工作者仍在根目录中搜索,然后找不到。
我使用以下命令进行部署:
ng build --prod --base-href / myfolder /
然后服务人员进入:
https://mydomian.com/myfolder/firebase-messaging-sw.js
但该应用仍在
中搜索它https://mydomian.com/firebase-messaging-sw.js
我怎么说在myfolder中搜索?
我在这里看到类似的问题:
https://groups.google.com/forum/?hl=es-419#!searchin/firebase-talk/firebase $ 20部署$ 20in $ 20folder | sort:date / firebase-talk / 1QKGP1lYj_A / k9hjXolECAAJ
但是我没有这个firebase.json ...我支持的是因为它是Angular应用。
希望有人可以帮助我。
预先感谢
答案 0 :(得分:0)
我有一个类似的问题,我在构建完应用后,通过在一个名称类似于“ 4.a514e2ef0845553d68e7.js”的文件中搜索此代码来解决此问题
navigator.serviceWorker.register(“ / firebase-messaging-sw.js”, {scope:“ / firebase-cloud-messaging-push-scope”})
具有绝对路径
并更改为
navigator.serviceWorker.register(“ firebase-messaging-sw.js”,{范围: “ firebase-cloud-messaging-push-scope”})
答案 1 :(得分:0)
创建临时脚本。 (replacefile.js)
在构建角度 prod 文件时:
<块引用>ng build --prod && node ./replacefile.js
const replace = require('replace-in-file');
const options = {
files: 'dist/enlink/*.js',
from: "register(\"/firebase-messaging-sw.js\",{scope:\"/firebase-cloud-messaging-push-scope\"})",
to: "register(\"firebase-messaging-sw.js\",{scope:\"firebase-cloud-messaging-push-scope\"})",
allowEmptyPaths: false,
};
try {
replace.sync(options);
console.log('Firebase service worker path fixed!');
} catch (error) {
console.error('Error occurred:', error);
}
替换路径 '/' -> '' 将起作用。