部署 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 cli 云功能部署。 npm 错误!函数@ lint 脚本失败