Angular Firebase Service Worker部署在文件夹

时间:2019-02-12 09:12:00

标签: javascript angular firebase

我使用Firebase向我的Angular应用发送推送通知。

我是按照本教程进行的:

https://medium.com/@a.adendrata/push-notifications-with-angular-6-firebase-cloud-massaging-dbfb5fbc0eeb

当我在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应用。

希望有人可以帮助我。

预先感谢

2 个答案:

答案 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);
}

替换路径 '/' -> '' 将起作用。