Polymerfire - невозможно прочитать свойство "push" из неопределенного
У меня проблема похожая на это, за исключением того, что я использую полимерный шаблон из этого.
Я импортировал все ссылки на Polymerfire как на странице, где <firebase-app>
объявлен и на странице, где <firebase-query>
используется. Не работает.
Позже я обнаружил, что в шаблоне используется polymirefire, версия которого v0.9.4, а не последняя v0.10.3. Я попытался удалить и переустановить новую версию. Ничего не изменилось.
Для дополнительной информации вот фрагмент кода:
SRC / приложение-авторизация / приложение-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>
ЦСИ / приложение-страницы / приложение-страницы новый материал / приложение-страницы новый 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)."
Кто-нибудь?
1 ответ
После нескольких дней разочарования это работает. По-видимому.
TL; DR
То, что я сделал, - это обновление polymfire и исключение name
атрибут из любого элемента Firebase.
объяснение
Глядя на это, кажется, Firebase инициализирует приложение в __computeApp
Метод и имя - необязательная переменная, но она будет использоваться при инициализации, если она предоставлена. Проигнорируйте это, и все должно быть хорошо. В моем случае это работает как для <firebase-app>
, <firebase-auth>
, а также <firebase-query>
(для отправки данных, потому что я все еще использую Firebase-запрос для получения данных)
Хотя это работает в моем случае, это не обязательно правильное решение. Это может не сработать в вашем случае. Мне понадобилось несколько дней, чтобы понять это, поэтому для тех, кто сталкивается с подобными проблемами, может помочь одна из них:
- Проверьте Firebase атрибут запроса. Обратитесь к этому
- Попробуйте импортировать PolymerFire / PolymerFire.html в тот же HTML-файл, где
<firebase-app>
объявлен Обратитесь к этому - Обновление PolymFire. Просто удалите и переустановите это может решить проблему (для тех, у кого устаревшая версия PolymerFire)
- не указывать
name
атрибут из любого элемента Firebase. Я знаю мой<firebase-app>
успешно инициализируется при вводеfirebase.database()
в консоли браузера это больше не выдает ошибку.
Надеюсь, поможет.