Polymerfire - 无法读取未定义的 属性 'push'

Polymerfire - Cannot read property 'push' of undefined

我有类似 , except that I'm using polymer template from this 的问题。

我在声明 <firebase-app> 的页面和使用 <firebase-query> 的页面中导入了所有 polymerfire 引用。不工作。

后来发现模板使用的是polymerfire,版本是v0.9.4,而不是最新的v0.10.3。我尝试卸载并重新安装新版本。没有任何变化。

有关更多信息,请参阅以下代码片段:

src/app-auth/app-auth-firebase.html

<link rel="import" href="../../bower_components/polymerfire/polymerfire.html">
<link rel="import" href="../../bower_components/polymerfire/firebase-app.html">
<link rel="import" href="../../bower_components/polymerfire/firebase-auth.html">
<link rel="import" href="../../bower_components/polymerfire/firebase-query.html">
...
<firebase-app name="pwa-demo" api-key="abc" auth-domain="abc" database-url="abc"></firebase-app>

<firebase-auth id="auth" app-name="pwa-demo" signed-in="{{_signedIn}}" user="{{_user}}"on-error="_onAuthError"></firebase-auth>

src/app-pages/app-page-new-stuff/app-page-new-stuff.html

<link rel="import" href="../../../bower_components/polymerfire/firebase-auth.html">
<link rel="import" href="../../../bower_components/polymerfire/firebase-query.html">
<link rel="import" href="../../../bower_components/polymerfire/polymerfire.html">
...
<firebase-auth user="{{user}}"></firebase-auth>

<firebase-query id="stuffquery" app-name="pwa-demo" path="/users/[[user.uid]]/events" data="{{events}}"> </firebase-query>
...
_onFormSubmit: function() {   
    this.$.stuffquery.ref.push({
        title: this.$.piTitle.value
    });
}

还有什么我想念的吗?请帮忙。

编辑: 我发现了另外两件奇怪的事情,这可能会有所帮助。首先,我不能既检索数据又将数据推送到我的应用程序。其次,当我尝试在浏览器控制台中 运行 firebase.database() 时,我得到了 "Firebase: No Firebase App '[DEFAULT]' has been created - call Firebase App.initializeApp() (app/no-app)."

有人吗?

经过几天的挫折,它起作用了。显然。

TL;DR

我所做的是更新 polymerfire 并从任何 firebase 元素中省略 name 属性。

说明

正在查看this, it seems firebase initializes the app in __computeApp method and name is an optional variable but will be used in initialization if it is provided. Ignore it and everything should be okay. In my case, it works both for <firebase-app>, <firebase-auth>, and <firebase-query> (for pushing data, because i'm still stuck in using firebase-query for fetching data)

虽然它适用于我的情况,但它可能不一定是正确的解决方案。它可能不适用于您的情况。我花了几天时间才弄明白,所以对于那些遇到类似问题的人,其中一个可能会有所帮助:

  1. 检查 firebase 查询属性。参考
  2. 尝试在声明 <firebase-app> 的同一个 html 文件中导入 polymerfire/polymerfire.html。参考
  3. 更新 polymerfire。简单地卸载并重新安装它可能会解决这个问题(对于那些使用过时版本的 polymerfire 的人)
  4. 省略任何 firebase 元素的 name 属性。我知道当我在浏览器控制台中输入 firebase.database() 时我的 <firebase-app> 已成功初始化,它不再给出错误。

希望对您有所帮助。