最近,在尝试部署我的Firebase Functions时,我收到以下错误:
...
functions[verify(us-central1)]: Deployment error.
Build failed: Build error details not available. Please check the logs at
...
基仕伯日志:
>labels.build_step | resource.type | severity | textPayload |
---|---|---|---|
主 | 构建 | 信息 | 错误:获取存储时出错 源:通用::未知:重试预算已用尽(3 次尝试):获取 GCS 源:解压缩 来自 GCS 的源:源提取容器以非零状态退出:1 |
主 | 构建 | 信息 | 错误 |
gsutil:STDOUT | build | INFO | Archive:/tmp/source-archive.zip |
gsutil:STDERR | build | INFO | (EOF 或读取错误,视为"[N]one" ...) |
gsutil:STDERR | build | INFO | replace/workspace/.runtimeconfig.json?[y]es, [n]o, [A]ll, [N]one, [r]ename: NULL |
gsutil:STDERR | build | INFO | 操作在 1 个对象/89.4 KiB 上完成。 |
gsutil:STDERR | build | INFO | /[0 文件][ 0.0 B/89.4 KiB]/[1 文件][ 89.4 KiB/89.4 KiB] |
gsutil:STDERR | build | INFO | 复制 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 | build | INFO | (EOF 或读取错误,视为"[N]one" ...) |
gsutil:STDERR | build | INFO | replace/workspace/.runtimeconfig.json?[y]es, [n]o, [A]ll, [N]one, [r]ename: NULL |
gsutil:STDOUT | build | INFO | Archive:/tmp/source-archive.zip |
gsutil:STDERR | build | INFO | 操作在 1 个对象/89.4 KiB 上完成。 |
gsutil:STDERR | build | INFO | /[0 文件][ 0.0 B/89.4 KiB]/[1 文件][ 89.4 KiB/89.4 KiB] |
gsutil:STDERR | build | INFO | 复制 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:STDOUT | build | INFO | inflating:/workspace/tslint.json |
gsutil:STDOUT | build | INFO | inflating:/workspace/tsconfig.json |
gsutil:STDOUT | build | INFO | inflating:/workspace/src/index.ts |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/src/booking.mjml |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/src/booking.html |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/package.json |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/package-lock.json |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/lib/index.js.map |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/lib/index.js |
gsutil:STDOUT | build | INFO | 膨胀:/workspace/.runtimeconfig.json 膨胀:/workspace/.gitignore |
gsutil:STDOUT | build | INFO | Archive:/tmp/source-archive.zip |
gsutil:STDERR | build | INFO | 操作在 1 个对象/89.4 KiB 上完成。 |
gsutil:STDERR | build | INFO | /[0 文件][ 0.0 B/89.4 KiB]/[1 文件][ 89.4 KiB/89.4 KiB] |
gsutil:STDERR | build | INFO | 复制 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"> |
从节点 15 降级到节点 14 或节点 12 可以解决此问题。
我的环境:
我运行的是带有M1 ARM芯片的MacBook Air。我不知道它是否相关,但可能是。
已知有效的版本组合:
当前运行 v14.15.4 x64 和 Firebase-tools 9.2.2。这种组合似乎没有故障。
在确定这一点之前,我已经尝试了带有Firebase-tools 9.2.2的v12.20.1 x64,并且也有效。
我尝试过但失败的版本组合:
我已经尝试了节点 v15.6.0,arm64 和 x64,使用 firebase-tools 9.2.2、9.2.1、9.2.0、9.1.2 和 8.20.0,但没有成功。
还尝试了节点 v15.7.0 arm64 与 firebase-tools 9.2.2 没有成功。
在 M1 Mac 上获取这些:
如果您像我一样使用的是 M1 Mac,您可能已经知道 v14 无法在 M1 中编译。对于不是 v15.5 或更高版本的任何内容,都需要使用 x64 版本。
有很多指南以及x64版本的官方NodeJS下载,可以在Rosetta 2上运行良好(不要尝试ARM版本,这些指南目前仅适用于Linux,不适用于Mac)。
如果您使用 nvm 来管理您的版本并希望同时安装 x64 和 arm64 版本,这就是我的做法:
让 x64 和 arm64 版本共存:
nvm install
将添加节点版本。如果你对你的机器没有做任何特别的事情,那么nvm install 15
应该为你工作。目前还没有 M1 的预编译二进制文件,因此请准备好等待几分钟(超过 10 分钟)。
要获得节点 14 设置,只需打开一个新的终端窗口并输入arch -x86_64 zsh
,这将在 x64 模式下启动一个新的 zsh 进程。在同一终端类型上nvm install 14
.这应该比 v15 快得多,并且根据您的互联网速度,只需几秒钟即可返回。一切就绪。关闭此终端选项卡,忘记它曾经存在过。
现在运行nvm use 15
将设置节点运行 v15 arm64 版本,运行nvm use 14
将运行 v14 x64 版本。
要检查节点版本,您可以运行node --version
,要检查架构,您可以运行node -p "process.arch"