Firebase部署错误:找不到模块“firebase-admin”。

32

最近我尝试部署到Firebase时,出现了以下错误(之前曾经成功部署)。我不确定是什么变化导致这种情况发生。如果在本地主机上运行firebase serve,则一切正常。我的package.json和index.js中的requires也如下所示。

i  deploying functions, hosting
i  functions: ensuring necessary APIs are enabled...
i  runtimeconfig: ensuring necessary APIs are enabled...
+  runtimeconfig: all necessary APIs are enabled
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (46.02 KB) for uploading
+  functions: functions folder uploaded successfully
i  hosting: preparing public directory for upload...
!  Warning: Public directory does not contain index.html
+  hosting: 9 files uploaded successfully
i  starting release process (may take several minutes)...
i  functions: updating function app...
!  functions[app]: Deploy Error: Function load error: Code in file index.js can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'firebase-admin'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/apps.j
s:25:16)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)


Functions deploy had errors. To continue deploying other features (such as datab
ase), run:
firebase deploy --except functions

Error: Functions did not deploy properly.

package.json:

{
"name": "functions",
"description": "Cloud Functions for Firebase",
"dependencies": {
"@google-cloud/vision": "^0.12.0",
"async": "^2.5.0",
"consolidate": "^0.14.5",
"express": "^4.15.4",
"firebase-admin": "^5.4.0",
"firebase-functions": "^0.5.7",
"handlebars": "^4.0.10",
"jquery": "^3.2.1",
"js-levenshtein": "^1.1.3",
"json-query": "^2.2.2"
},
"private": true
}

从 index.js 文件中:

const functions = require('firebase-functions');
const firebase = require('firebase-admin');
const express = require('express');
const engines = require('consolidate');
const Vision = require('@google-cloud/vision');
const levenshtein = require('js-levenshtein');
const restName = require('./restName');
const parser = require('./parser');
const jsonQuery = require('json-query')

const firebaseApp = firebase.initializeApp(
functions.config().firebase
);

刚开始出现相同的错误。 - Emile Esterhuizen
9个回答

28

他们有一个正在活跃的服务中断。请按照以下方法进行解决:https://status.firebase.google.com/incident/Functions/17024

在函数存储库内运行以下命令:

npm install --save-exact firebase-functions@0.7.0 npm install --save-exact firebase-admin@5.4.0

然后尝试再次部署函数:

firebase deploy --only functions

如果npm无法使用,您可以尝试yarn,这对我们很有效:

如果npm不起作用,您可以尝试使用yarn,这对我们有用:

yarn add firebase-functions@0.7.0 --exact yarn add firebase-admin@5.4.0 --exact

运行成功!谢谢您的帮助!还要特别感谢您提供的 yarn 提示!npm 无法安装它,因为它要求 "bun@0.0.11" 模块的引擎版本是 {"node":"~0.10.12"} (而当前的版本是 {"node":"6.11.1","npm":"5.5.1"})。 - Motin
似乎在我的这一端(挪威)已经解决了...无论是npm还是yarn的解决方法都对我没有用。 - Emile Esterhuizen
我现在遇到了以下问题: 部署错误:无法配置触发器提供程序/云.firestore/事件类型/文档写入@firestore.googleapis.com - Gal Bracha
升级到v1版后,这个问题就被解决了:https://firebase.google.com/docs/functions/beta-v1-diff - protoEvangelion

7

在文件夹 functions 中更新文件 package.json,并查看依赖项,从 firebase-admin 中删除 ~ 标记和从 firebase-functions 中删除 ^ 标记,应该如下所示:

"dependencies": {
  "firebase-admin": "5.4.0",
  "firebase-functions": "0.7.0"
}

在命令行中输入:

npm install

然后再尝试部署。


5
运行以下命令。
npm i firebase-admin 

4

enter image description here

问题在于位于“Functions”文件夹内的“package.json”与您项目目录中的“package.json”不同。是的,您有两个这个文件!
因此,如果您想部署(部署功能),请运行npm install express或在Function文件夹内安装其他依赖项,然后您将能够无错误地部署。

3

我进入了功能目录并运行了yarn(如果你比较老派,可以使用npm install)。然后返回到我的项目目录并再次运行firebase deploy


1

我为解决这个问题所做的事情:

1.) 确保我在正确的目录下的 package.json 中

2.) rm -rf node-modules

3.) npm i (缺少的模块)

4.) 确保缺失的依赖项不在 package.json 的 devDependencies 中,而是在 dependencies 中,因为 devDependencies 中的内容不会被部署。


0
尝试安装:npm i -g firebase-tools@6.8.0 这解决了我的问题。

0

我也遇到了同样的错误。我通过安装不同版本的nodejs来修复这个错误。我卸载了我的新版本,然后安装了Node v7.8.0。然后它就正常工作了 :)


0
如果使用docker,请确保您本地的nodejs版本与您在docker文件中使用的版本相同。例如,如果我正在使用node v16.14.0(通过在终端中键入node -v查找),则示例docker文件应为:
FROM node:16.14.0-alpine                             
ENV NODE_ENV=production                 
WORKDIR /app                            
COPY package*.json ./                  
RUN npm install --production            
COPY . .                                
CMD [ "npm", "start" ] 

             

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接