部署 Firebase 云函数时出错

Posted

技术标签:

【中文标题】部署 Firebase 云函数时出错【英文标题】:Errors in Deploying Firebase Cloud Functions 【发布时间】:2020-03-26 00:49:42 【问题描述】:

我在部署云功能时遇到了 @grpc/grpc-js only works on Node ^8.13.0 || >=10.10.0 错误。我安装了 nvm 并使用 Firebase 工具版本 7.8.1 将节点更新到 12.13.1。我再次运行 npm install 并重新部署了我的云功能并收到以下错误消息:

错误:解析触发器时出错:找不到模块“firebase”

需要堆栈:

/Users/chriscynn/Desktop/pretzly/pretzly/functions/index.js

/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js

我理解这意味着 node_modules 文件夹中的 firebase 模块不存在,这是真的。所以我输入了npm install firebase 命令,并在最底部完整粘贴了打印出来的内容。

任何帮助将不胜感激,在过去的几天里一直在辛勤工作 - 清理、安装、重新安装、卸载等 - 并且无法找到解决问题的一线希望。我对编程还很陌生,对 CLI 的理解更差。

我现在的package.json 是...

CLI npm install firebase 错误日志

1. grpc@1.20.0 install /Users/me/Desktop/appName/appName/functions/node_modules/grpc

node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN 使用 needle 进行 node-pre-gyp https 下载

node-pre-gyp WARN 尝试下载(404): https://node-precompiled-binaries.grpc.io/grpc/v1.20.0/node-v72-darwin-x64-unknown.tar.gz

node-pre-gyp WARN 未找到 grpc@1.20.0 和 node@12.13.1 (node-v72 ABI, unknown) (回退到源码编译 使用节点gyp)

2. “CXX(target) Release/obj.target...”行打印出来

3. ../ext/channel.cc:292:56:错误:函数调用的参数太少, 预期 2,有 1 诠释 try_to_connect = (int)info[0]->等于(Nan::True());

/Users/me/Library/Caches/node-gyp/12.13.1/include/node/v8.h:2616:3: 注意:此处声明的“等于” V8_WARN_UNUSED_RESULT 也许 等于(本地上下文,

/Users/me/Library/Caches/node-gyp/12.13.1/include/node/v8config.h:351:31: 注意:从宏“V8_WARN_UNUSED_RESULT”扩展而来 定义 V8_WARN_UNUSED_RESULT 属性((warn_unused_result))

生成 1 个错误。

make: *** [Release/obj.target/grpc_node/ext/channel.o] 错误 1

gyp 错误!构建错误

gyp 错误!堆栈错误:make 失败,退出代码:2

gyp 错误! ChildProcess.onExit 的堆栈 (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)

gyp 错误! ChildProcess.emit (events.js:210:5) 的堆栈

gyp 错误! Process.ChildProcess._handle.onexit 处的堆栈 (internal/child_process.js:272:12)

gyp 错误!系统达尔文 18.7.0

gyp 错误!命令 “/usr/local/bin/node” “/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js” “build” “--fallback-to-build” “ --library=static_library""--module=/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown/grpc_node.node""- -module_name=grpc_node" "--module_path=/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown" “--napi_version=5” “--node_abi_napi=napi” “--napi_build_version=0” "--node_napi_label=node-v72"

gyp 错误! cwd /Users/me/Desktop/appName/appName/functions/node_modules/grpc

gyp 错误!节点-v v12.13.1

gyp 错误!节点gyp -v v5.0.5

gyp 错误!不行

node-pre-gyp 错误!构建错误

node-pre-gyp 错误!堆栈错误:无法执行'/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library =static_library --module=/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown/grpc_node.node --module_name=grpc_node --module_path =/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown --napi_version=5 --node_abi_napi=napi --napi_build_version=0 -- node_napi_label=node-v72' (1)

node-pre-gyp 错误! ChildProcess 的堆栈。 (/Users/me/Desktop/appName/appName/functions/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)

node-pre-gyp 错误! ChildProcess.emit (events.js:210:5) 的堆栈

node-pre-gyp 错误!堆栈在可能关闭(内部/child_process.js:1021:16)

node-pre-gyp 错误! Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) 的堆栈

node-pre-gyp 错误!系统达尔文 18.7.0

node-pre-gyp 错误!命令“/usr/local/bin/node”“/Users/me/Desktop/appName/appName/functions/node_modules/grpc/node_modules/.bin/node-pre-gyp”“安装”“--fallback-to-构建" "--library=static_library"

node-pre-gyp 错误! cwd /Users/me/Desktop/appName/appName/functions/node_modules/grpc

node-pre-gyp 错误!节点-v v12.13.1

node-pre-gyp 错误! node-pre-gyp -v v0.12.0

node-pre-gyp 错误!不行

无法执行 '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library =static_library --module=/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown/grpc_node.node --module_name=grpc_node --module_path =/Users/me/Desktop/appName/appName/functions/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown --napi_version=5 --node_abi_napi=napi --napi_build_version=0 -- node_napi_label=node-v72' (1)

npm 错误!代码生命周期

npm 错误!错误号 1

npm 错误! grpc@1.20.0 install: node-pre-gyp install --fallback-to-build --library=static_library

npm 错误!退出状态 1

npm 错误! grpc@1.20.0 安装脚本失败。

【问题讨论】:

考虑到 Firebase 和 firebase/app 模块的用途是在网络浏览器中使用,而不是在 node 中使用,您打算如何处理它们?通常对于后端,只使用 firebase-admin。 @DougStevenson 感谢您的评论。不完全确定我是否正确回答,但通过 index.js 文件,我有 firebase 模块来发送推送通知并更新 firestore 数据。 【参考方案1】:

首先,您需要确保删除任何有冲突的 npm 版本

sudo apt-get autoremove 

第二次使用以下方式安装最新的npm

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - 

然后

sudo apt-get install -y nodejs

这适用于 Debian 发行版,对于另一个操作系统,请查看此链接: https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions-enterprise-linux-fedora-and-snap-packages

或者,你也可以使用

sudo npm install -g npm@latest

或特别适用于 8.13.0 版

 sudo npm install -g npm@8.13.0

【讨论】:

【参考方案2】:

该日志中的问题是您正在安装 grpc 版本 1.20.0,它不支持 Node 12。您需要删除依赖于 grpc 的任何库,或者使用更新版本的 grpc ,或使用旧版本的 Node。

【讨论】:

【参考方案3】:

您想要做的事情都可以通过 firebase-admin 来完成。不要使用其他 Firebase 网络客户端库,因为它们不适用于节点。只需删除除 firebase-admin 和 firebase-functions 之外的所有其他 firebase 依赖项即可开始使用。

【讨论】:

我从 package.json 文件中删除了其他 firebase 依赖项,重新启动 CLI,删除了 node_modules 文件夹并重新输入命令 npm install,然后重新部署,但我仍然收到相同的错误。 ..有什么想法吗? 使用消除过程。继续删除东西直到它工作,然后重新添加东西,直到你弄清楚其他模块可能导致问题。 @chris,您是否删除了您的 npm install firebase 并将其替换为 npm install firebase-admin? 你能试试运行sudo npm install -g node-gyp吗? 大人。 @AtlanteAvila 我相信您建议的命令行为我做到了..感谢您指导我逃离炼狱。

以上是关于部署 Firebase 云函数时出错的主要内容,如果未能解决你的问题,请参考以下文章

迁移到打字稿后,Firebase 云功能无法正常工作

部署到 Firebase 云功能时出错 - ?缺少配置详细信息

错误 Firebase cli 云功能部署。 npm 错误!函数@ lint 脚本失败

在 cli 上部署云函数,“Firebase 配置变量不可用。”

在firebase云函数中部署nestjs

部署错误。构建失败:构建错误详细信息不可用。 Firebase 云函数