类型错误:rtdb.initStandalone 不是函数

IT技术 node.js reactjs firebase firebase-realtime-database firebase-admin
2021-05-21 19:54:39

我对 Node 和 Firebase 都很陌生,但似乎无法在线找到此错误。

当我尝试通过 Firebase Admin 加载 Firebase 数据库时出现以下错误:

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;

节点module版本:Firebase-Admin@5.8.0 @firebase/app@0.1.1 @firebase/database@0.1.3

1个回答

如果有人有同样的问题,我做了:

@firebase/database/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因为它只在服务器端使用,而不是在浏览器中。

如果您使用 webpack 捆绑您的代码,即使使用target: 'node',它也会更喜欢“module”而不是“主”,并使用用于浏览器的文件。

对我来说,解决方案是一套resolve.mainFields["main", "module"]中的WebPack配置。

附注。我正在使用 webpack 准备要上传到 AWS Lambda 的代码。如果我不使用它,我必须上传整个 node_modules 文件夹,该文件夹很大并且经常导致上传超时。我只需要其中 10% 的代码。如果有人知道更好的解决方案,我很想听听。