firebase - Firebase Functions 部署需要在 GCP 中进行键盘输入
问题描述
最近,当尝试部署我的 Firebase 函数时,我收到以下错误:
...
functions[verify(us-central1)]: Deployment error.
Build failed: Build error details not available. Please check the logs at
...
GCP 日志:
标签.build_step | 资源类型 | 严重性 | 文本有效载荷 |
---|---|---|---|
主要的 | 建造 | 信息 | 错误:获取存储源时出错:通用::未知:重试预算用尽(3 次尝试):获取 gcs 源:从 gcs 解包源:源提取容器以非零状态退出:1 |
主要的 | 建造 | 信息 | 错误 |
gsutil:标准输出 | 建造 | 信息 | 存档:/tmp/source-archive.zip |
gsutil:STDERR | 建造 | 信息 | (EOF 或读取错误,视为“[N]one”...) |
gsutil:STDERR | 建造 | 信息 | 替换 /workspace/.runtimeconfig.json?[y]es, [n]o, [A]ll, [N]one, [r]ename: NULL |
gsutil:STDERR | 建造 | 信息 | 操作完成超过 1 个对象/89.4 KiB。 |
gsutil:STDERR | 建造 | 信息 | /[0 个文件][0.0 B/89.4 KiB]/[1 个文件][89.4 KiB/89.4 KiB] |
gsutil:STDERR | 建造 | 信息 | 复制 gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422... |
主要的 | 建造 | 信息 | 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422 |
gsutil:STDERR | 建造 | 信息 | (EOF 或读取错误,视为“[N]one”...) |
gsutil:STDERR | 建造 | 信息 | 替换 /workspace/.runtimeconfig.json?[y]es, [n]o, [A]ll, [N]one, [r]ename: NULL |
gsutil:标准输出 | 建造 | 信息 | 存档:/tmp/source-archive.zip |
gsutil:STDERR | 建造 | 信息 | 操作完成超过 1 个对象/89.4 KiB。 |
gsutil:STDERR | 建造 | 信息 | /[0 个文件][0.0 B/89.4 KiB]/[1 个文件][89.4 KiB/89.4 KiB] |
gsutil:STDERR | 建造 | 信息 | 复制 gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422... |
主要的 | 建造 | 信息 | 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422 |
gsutil:STDERR | 建造 | 信息 | 坏 CRC 4992186c(应该是 00000000) |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/tslint.json |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/tsconfig.json |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/src/index.ts |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/src/booking.mjml |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/src/booking.html |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/package.json |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/package-lock.json |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/lib/index.js.map |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/lib/index.js |
gsutil:标准输出 | 建造 | 信息 | 膨胀:/workspace/.runtimeconfig.json 膨胀:/workspace/.gitignore |
gsutil:标准输出 | 建造 | 信息 | 存档:/tmp/source-archive.zip |
gsutil:STDERR | 建造 | 信息 | 操作完成超过 1 个对象/89.4 KiB。 |
gsutil:STDERR | 建造 | 信息 | /[0 个文件][0.0 B/89.4 KiB]/[1 个文件][89.4 KiB/89.4 KiB] |
gsutil:STDERR | 建造 | 信息 | 复制 gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422... |
主要的 | 建造 | 信息 | 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611906282665422 |
主要的 | 建造 | 信息 | 获取源 |
主要的 | 建造 | 信息 | 开始构建“f8f97fdd-29ff-4964-a080-26ba4bdd5705” |
显然它需要我按下一个键来替换/workspace/.runtimeconfig.json,这显然是我做不到的。还有一个 CRC 不匹配。
我已通过 Cloud Functions 选项卡删除了函数并重新安装了所有节点模块,但错误仍然存在。
解决方案
<TL/DR> 从节点 15 降级到节点 14 或节点 12 可以解决问题。
我的环境:
我正在运行带有 M1 ARM 芯片的 MacBook Air。我不知道它是否相关,但它可能是。
已知有效的版本组合:
目前使用 firebase-tools 9.2.2 运行 v14.15.4 x64。这种组合似乎没有故障。
在确定之前,我尝试了 v12.20.1 x64 和 firebase-tools 9.2.2,效果也很好。
我尝试过但失败的版本组合:
我已经使用 firebase-tools 9.2.2、9.2.1、9.2.0、9.1.2 和 8.20.0 尝试了 arm64 和 x64 的节点 v15.6.0,但没有成功。
还尝试了 node v15.7.0 arm64 和 firebase-tools 9.2.2,但没有成功。
让那些在 M1 Mac 上:
如果您像我一样使用 M1 Mac,您可能已经知道 v14 无法在 M1 中编译。对于非 v15.5 或更高版本的任何内容,您都需要使用 x64 版本。
有许多指南和官方 NodeJS下载,用于 x64 版本,可以在 Rosetta 2 上正常运行(不要尝试 ARM 版本,这些仅适用于 Linux,不适用于您的 Mac)。
如果您使用nvm来管理您的版本并希望同时安装 x64 和 arm64 版本,我就是这样做的:
让 x64 和 arm64 版本共存:
nvm install
将添加一个节点版本。如果你对你的机器没有做任何特别的事情,那么nvm install 15
应该为你工作。目前还没有 M1 的预编译二进制文件,所以准备等待几分钟(超过 10 分钟)。
要设置 Node 14,只需打开一个新的终端窗口并输入arch -x86_64 zsh
,这将在 x64 模式下启动一个新的 zsh 进程。在同一终端类型nvm install 14
上。这应该比 v15 快得多,并且根据您的互联网速度,只需几秒钟即可返回。你都准备好了。关闭此终端选项卡并忘记它曾经存在过。
现在 runningnvm use 15
将设置 node 运行 v15 arm64 版本, runningnvm use 14
将运行 v14 x64 版本。
要检查您可以运行的节点版本node --version
并检查您可以运行的架构node -p "process.arch"
推荐阅读
- javascript - 如何在 Eclipse 控制台中对终止事件(红色按钮)执行操作?
- entity-framework-core - Ef core Ownsone 问题“正在共享餐桌”
- email - Microsoft Office 365 范围活动 - Office365message 获取邮件主题
- python - 无法在 jupyter notebook 中导入已安装的包
- kubernetes - 使用 kubernetes 执行程序时,如何在气流中将 PVC 与工作舱绑定?
- firebase - firebase 如何识别刚刚关闭应用但未注销的用户
- sql - 将时间戳舍入到每小时间隔?
- java - 对对象引用方法 Java 8 使用双冒号
- xslt-2.0 - 如何获取值的类型?
- node.js - Firestore 获取子集合的所有文档