Ошибка типа: rtdb.initStandalone не является функцией

2

Я новичок как для Node, так и для Firebase, но не могу найти эту ошибку в Интернете.

Я получаю следующую ошибку, когда пытаюсь загрузить базу данных Firebase через Firebase Admin:

TypeError: rtdb.initStandalone не является функцией DatabaseService../node_modules/firebase-admin/lib/database/database.js.DatabaseService.getDatabase node_modules/firebase-admin/lib/database/database.js: 62

    var db = this.INTERNAL.databases[dbUrl];
    if (typeof db === 'undefined') {
        var rtdb = require('@firebase/database');
        db = rtdb.initStandalone(this.appInternal, dbUrl).instance;
        this.INTERNAL.databases[dbUrl] = db;
    }
    return db;

Версии модуля узла: Firebase -Admin @5.8.0 @firebase/app @0.1.1 @firebase/database @0.1.3

  • 0
    Похоже, вы пытаетесь использовать как Firebase Admin SDK, так и SDK веб-клиента Firebase в одной программе. Это, вероятно, не то, что вы хотите. Если вы пишете код сервера, просто используйте Admin SDK и не связывайтесь с клиентским SDK.
  • 0
    Привет, Даг, спасибо за ответ. Согласно package.json, firebase-admin считает firebase-database зависимостью - я не думаю, что установил веб-клиент firebase, но не уверен ... я попытался добавить firebase в качестве основного пакета и обновить попытаться решить вышеупомянутую проблему первоначально (но, очевидно, безрезультатно).
Показать ещё 3 комментария
Теги:
firebase
firebase-database
firebase-admin

1 ответ

4

Если у кого-то есть такая же проблема, я сделал:

@Firebase/базы данных /package.json:

"main": "dist/cjs/index.node.js",
"browser": "dist/cjs/index.js",
"module": "dist/esm/index.js",

initStandalone() находится в dist/cjs/index.node.js но не dist/esm/index.js потому что он используется только serveride, а не в браузере.

Если вы используете webpack для связывания своего кода, даже с target: 'node', он предпочтет "модуль" поверх "основного" и использовать файл, предназначенный для браузера.

Решение для меня состояло в том, чтобы установить resolve.mainFields в ["main", "module"] в конфигурации webpack.

PS. Я использую webpack для подготовки моего кода для загрузки в AWS Lambda. Если я его не использую, я должен загрузить всю папку node_modules, которая огромна и часто вызывает таймауты при загрузке. Мне нужно только 10% кода, который там есть. Если кто-то знает о лучшем решении, я очень хочу его услышать.

  • 0
    Спасибо за то, что поделился этим! Наконец-то закончилась многочасовая головная боль для меня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню