Chrome 69不支持Firebase SDK。

10

昨天一切都运作得很完美,今天早上我注意到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

长话短说:消息传递:“此浏览器不支持使用Firebase SDK所需的API”。降级到Chrome 68是一个解决方案,但是否有更好的想法?
编辑:
系统信息:Pop!_OS 18.04 LTS Linux(64位)
Chrome版本:69.0.3497.81(官方构建)(64位)
Node版本:v10.9.0
编辑:
服务器在部署到生产环境和Firefox时工作正常。
5个回答

23

当您没有使用HTTPS或localhost时,会出现此问题。这在官方文档中有所记录:来源

FCM SDK仅支持通过HTTPS提供的页面。这是因为它使用服务工作者,而服务工作者仅在HTTPS站点上可用。

当然,您的问题是由于使用0.0.0.0而不是localhost引起的。


7

编辑: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。


1
根据9月27日的评论:https://github.com/firebase/firebase-js-sdk/issues/1220#issuecomment-425087339在Service Workers中实现firebase.messaging需要HTTPS。如果您需要在本地测试,请建议在项目文件夹中运行firebase serve - blaytenshi

5

解决方案

我之前使用的是0.0.0.0:8000,将其改为localhost:8000后问题得到了解决。有些人认为这两者有很大的区别,但我认为相反...


0

尝试使用最新的Firebase JS库版本5.4.2-2018年8月30日

修复了在某些环境中navigator全局不可用的问题。

... 而NodeJS版本则相当无关紧要。


0

这看起来像是Firefox中的一个错误或规范违反。在当前版本的Firefox Nightly(版本64)中,它也会抛出此错误。


1
那么它在 Firefox 上能够工作是 Firefox 的一个漏洞吗?我不这样认为,它在之前的 Chrome 上完美地工作了,这样的漏洞将会立即被 Chrome 和 Firebase 组合大小的社区发现。你同意吗? - corvus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接