Chrome 69 不支持 Firebase SDK

Chrome 69 doesn't support Firebase SDK

昨天一切正常,今天早上我发现chrome引入了一个新界面,然后我检查了chrome版本,现在更新到v69。到目前为止,一切都很好。 然后我 运行 我的服务器链接到 firebase。但我开始得到这个:

09:46:30.598 index.esm.js?76ac:2069 Uncaught FirebaseError {code: "messaging/unsupported-browser", message: "Messaging: This browser doesn't support the API's …he firebase SDK. (messaging/unsupported-browser).", stack: "FirebaseError: Messaging: This browser doesn't sup….0.0.0:8000/index.js?d00bc69e0c69f561d4af:2672:1)"}code: "messaging/unsupported-browser"message: "Messaging: This browser doesn't support the API's required to use the firebase SDK. (messaging/unsupported-browser)."stack: "FirebaseError: Messaging: This browser doesn't support the API's required to use the firebase SDK. (messaging/unsupported-browser).
at Object.factoryMethod [as messaging] (webpack-internal:///311:2077:32)
at FirebaseAppImpl._getService (webpack-internal:///30:134:66)
at FirebaseAppImpl.(anonymous function) [as messaging] (webpack-internal:///30:323:31)
at Object.serviceNamespace [as messaging] (webpack-internal:///30:308:32)
at eval (webpack-internal:///66:51:36)
at Object.<anonymous> (http://0.0.0.0:8000/index.js?d00bc69e0c69f561d4af:1240:1)
at __webpack_require__ (http://0.0.0.0:8000/index.js?d00bc69e0c69f561d4af:708:30)
at fn (http://0.0.0.0:8000/index.js?d00bc69e0c69f561d4af:113:20)
at eval (webpack-internal:///286:55:11)
at Object.<anonymous> (http://0.0.0.0:8000/index.js?d00bc69e0c69f561d4af:2672:1)"__proto__: Error

长错误变短:Messaging: This browser doesn't support the API's required to use the firebase SDK

降级到 chrome68 是一个解决方案,但有没有人有更好的主意?

编辑:

系统信息:Pop!_OS 18.04 LTS Linux(64 位)

Chrome 版本:69.0.3497.81(正式版)(64 位)

节点版本:v10.9.0

编辑:

服务器在部署到生产和 firefox 时工作正常。

试用最新的 Firebase JS 库 Version 5.4.2 - August 30, 2018

Fixed an issue where the navigator global was unavailable in some environments.

... 而 NodeJS 版本是无关紧要的。

这看起来像是 Firefox 中的 bug/spec 违规行为。在当前版本的Firefox Nightly(版本64)中,也会抛出这个错误。

解决方案

我正在研究 0.0.0.0:8000,将其更改为 localhost:8000 并且成功了,有些人会争论巨大的差异,我会争论相反的...

编辑:https://github.com/firebase/firebase-js-sdk/issues/1220#issuecomment-421317994

一定是 SSL 有问题

我在没有 SSL 的 Amazon S3 Bucket 中测试..

目前我看到的唯一解决方案是检查 chrome 版本并在 69 中禁用 firebase。

它破坏了整个应用程序,我正在努力。我们使用 Firebase Cloud Messaging 进行推送通知,一切都很好,直到 Chrome 68.

在本地主机上工作,但在生产环境中不工作。

更新了脚本:

https://www.gstatic.com/firebasejs/5.5.0/firebase-app.js https://www.gstatic.com/firebasejs/5.5.0/firebase-messaging.js

没有成功。

有趣的事情:当我调试时 chrome

if ('Notification' in window) {
  console.log('supported'); } else {
 console.log(' not supported'); }

它说支持推送API。

当您未使用 HTTPS 或 localhost 时会出现此问题。这在官方文档中有记录:source

The FCM SDK is supported only in pages served over HTTPS. This is due to its use of service workers, which are available only on HTTPS sites.

当然,您的问题是因为使用 0.0.0.0 而不是 localhost