TypeError:rtdb.initStandalone不是函数

时间:2018-01-15 15:40:45

标签: node.js reactjs firebase firebase-realtime-database firebase-admin

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

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

TypeError:rtdb.initStandalone不是函数 DatabaseService ../ node_modules /火力管理员/ lib目录/数据库/ database.js.DatabaseService.getDatabase node_modules /火力管理员/ LIB /数据库/ 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 @火力/应用@ 0.1.1 @火力/数据库@ 0.1.3

1 个答案:

答案 0 :(得分:4)

如果有人遇到同样的问题:

@火力/数据库/的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',它也会更喜欢“模块”而不是“主”,并使用用于浏览器的文件。

我的解决方案是在webpack配置中将resolve.mainFields设置为["main", "module"]

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