Firebase 函数部署需要 GCP 中的键盘输入

Bas*_*ock 3 firebase google-cloud-platform google-cloud-functions

最近,在尝试部署我的 Firebase 函数时,我收到以下错误:

...
functions[verify(us-central1)]: Deployment error.
Build failed: Build error details not available. Please check the logs at
...
Run Code Online (Sandbox Code Playgroud)

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#1611906282...665422
主要的 建造 信息 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611905428266
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#1611906282...665422
主要的 建造 信息 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611905428266
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#1611906282...665422
主要的 建造 信息 获取存储对象:gs://gcf-sources-972818261280-us-central1/verify-d55557e5-9fcf-4a3d-b144-17690c85f5a1/version-182/function-source.zip#1611905428266
主要的 建造 信息 获取源
主要的 建造 信息 开始构建“f8f97fdd-29ff-4964-a080-26ba4bdd5705”

显然它需要我按一个键来替换/workspace/.runtimeconfig.json,我显然做不到。还有一个 CRC 不匹配。

我已经通过 Cloud Functions 选项卡删除了这些函数并重新安装了我的所有节点模块,但错误仍然存​​在。

Wes*_*Wes 5

<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 并且效果很好。

我尝试过但失败的版本组合:

我已经尝试了 node v15.6.0,包括 arm64 和 x64,以及 firebase-tools 9.2.2、9.2.1、9.2.0、9.1.2 和 8.20.0,但没有成功。

还使用 firebase-tools 9.2.2 尝试了 node v15.7.0 arm64,但没有成功。

在 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 分钟)。

要设置 Node 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"