Я новичок как для 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
Если у кого-то есть такая же проблема, я сделал:
@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% кода, который там есть. Если кто-то знает о лучшем решении, я очень хочу его услышать.