首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在firebase函数package.json中包含@firebase/app

在firebase函数package.json中包含@firebase/app
EN

Stack Overflow用户
提问于 2020-01-08 20:02:08
回答 2查看 1.5K关注 0票数 1

更新到最新的firebase SDK和工具后

代码语言:javascript
复制
npm install firebase-functions@latest firebase-admin@latest --save
npm install -g firebase-tools

在尝试部署我的firebase函数时,我开始收到以下错误:

代码语言:javascript
复制
TypeError: instance.INTERNAL.registerComponent is not a function
    at registerDatabase (/Users/jr/projects/docavea/functions/node_modules/@firebase/database/dist/index.node.cjs.js:15168:39)
    at Object.<anonymous> (/Users/jr/projects/docavea/functions/node_modules/@firebase/database/dist/index.node.cjs.js:15200:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at FirebaseNamespace.get [as database] (/Users/jr/projects/docavea/functions/node_modules/firebase-admin/lib/firebase-namespace.js:282:38)

我在https://github.com/firebase/firebase-admin-node/issues/714https://github.com/firebase/firebase-admin-node/issues/717https://twitter.com/plane1113/status/1203009025232654336上找到了很多关于这个问题的建议,但没有一个对我有效,除了包括@firebase/app。有些人认为这是因为我的项目中有@firebase/app,但当我运行npm ls @firebase/app时,我得到了

代码语言:javascript
复制
    functions@ /Users/jr/projects/docavea/functions

└── (empty)

所以我的问题是:什么是@ firebase /app,在我的firebase函数package.json中包含它有问题吗?

代码语言:javascript
复制
{
    "name": "functions",
    "scripts": {
        "lint": "tslint --project tsconfig.json",
        "build": "tsc",
        "serve": "npm run build && firebase serve --only functions",
        "shell": "npm run build && firebase functions:shell",
        "start": "npm run shell",
        "deploy": "firebase deploy --only functions",
        "logs": "firebase functions:log"
    },
    "main": "lib/src/index.js",
    "dependencies": {
        "@firebase/app": "^0.5.0",
        "@sendgrid/mail": "^6.4.0",
        "cors": "^2.8.5",
        "firebase-admin": "^8.9.0",
        "firebase-functions": "^3.3.0",
        "lodash": "^4.17.15",
        "mailchimp-api-v3": "^1.13.1"
    },
    "peerDependencies": {
        "@google-cloud/firestore": "^3.3.2"
    },
    "engines": {
        "node": "8"
    },
    "devDependencies": {
        "tslint": "^5.20.1",
        "typescript": "^3.7.4"
    },
    "private": true
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-09 07:35:28

首先,为了回答这个问题,@firebase/app是一个模块,它是Firebase Web SDK的一部分(可以从npm install firebase获得),不需要手动安装,也不应该为firebase-admin安装。

因此,简而言之,以下是这个错误的一般情况:firebase-admin有一个名为@firebase/database的依赖项,该依赖项与Firebase Web SDK共享。最近发布的@firebase/database有一些更改,如果与旧版本的@firebase/app一起使用,它将无法工作。

所以基本上,如果你有(1)没有@firebase/app或者(2)有一个当前的@firebase/app,它应该可以工作。您的错误听起来很可能是现有的过时的@firebase/app

我知道您说您的项目中似乎没有@firebase/app,但由于这似乎是最有可能的原因,我想知道您是否在父目录中有它。(它作为Firebase Web SDK的一部分安装,就像在npm install firebase中一样。)大多数firebase函数(如果您使用firebase init)都设置在主项目存储库的/functions子目录中,具有自己的package.json,而项目的其余部分是上一级的,并具有另一个package.json。这看起来可能是你的dir结构?

在这种情况下,在/functions中运行npm ls会出现一个空结果,但如果您转到父目录(包含另一个package.json),它就会显示出来。如果节点在当前包中找不到包,它将上一级。看看你是否可以确保两个级别都是干净的,从任何@firebase/app,删除两个node_modules目录,重新安装。如果您确实需要它在顶层(对于Firebase Web SDK),请确保将其升级到最新的firebase (7.6.1)。

作为最后的手段,也许可以检查一下firebase是否以某种方式全局安装了npm。

如果您在项目的任何级别都没有@firebase/app,并且它仍然失败,那么这是一个我们应该调查的bug。

抱歉,信息太多了!希望这不是太多。TLDR:我想您的项目根目录中可能有@firebase/app?如果没有,请在Github上提交问题。

票数 1
EN

Stack Overflow用户

发布于 2020-01-09 21:36:43

基于@Christina Holland的回答,我做了进一步的调查。当我在我的Angular文件夹(functions是它的子文件夹)中运行npm ls @firebase/app时,我得到了:

代码语言:javascript
复制
    └─┬ UNMET PEER DEPENDENCY firebase@7.6.1
      └── @firebase/app@0.5.0
npm ERR! peer dep missing: firebase@>= 5.5.7 <7, required by @angular/fire@5.2.1

然后我将@angular/fire更新到了最新版本。它没有改变@firebase/app的版本,但删除了这个错误:

代码语言:javascript
复制
└─┬ firebase@7.6.1
  └── @firebase/app@0.5.0

在那之后,我可以从我的a函数package.json中删除@firebase/app,这样我就可以毫无错误地进行部署了。

我不知道这里发生了什么,但问题已经解决了,也许它可以帮助其他开发人员解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59645448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档