使用
gcloud
部署云功能失败,并显示以下消息,
错误:(gcloud.beta.functions.deploy)操作错误:代码=13, message=执行环境失败
在云函数日志中找不到太多有关该错误的信息。
使用
--verbose debug
运行部署会跟踪 Cloud SDK 目录中调用的函数,并最终显示以下错误,
FunctionsError:操作错误:代码= 13,消息=失败 执行环境错误:(gcloud.beta.functions.deploy) 操作错误:代码=13,消息=执行环境失败
根据此 Google Public Issue Tracker,该错误是由于非常大的 package.json 文件遇到内部限制造成的。可能的解决方法:
1- 在本地安装依赖项(通过“npm install”)并使用
--include-ignored-files
标志进行部署。
2- 将 package.json 减少到少于 4000 个字符
这是一个持续存在的问题,您可以关注此线程的讨论以获取相关更新。
就我而言,这是一个Python环境,罪魁祸首是依赖项
yarl==1.5.1
。
由于没有日志,我无法确切说明为什么
yarl
导致损坏,但降级到 yarl==1.3.0
为我解决了这个问题。
Firebase 的状态可以在以下位置找到: https://status.firebase.google.com/
只是在这里分享我们的经验,希望对以后的人有所帮助。
在我们的例子中,我们遇到了类似的错误:
ERROR: (gcloud.beta.functions.deploy) OperationError: code=13, message=Error setting up the execution environment for your function. Please try deploying again after a few minutes.
这是由于在代码中导入
package.json
来读取版本造成的。即:
import { version } from '../package.json';
生成的 JS 代码的转译和本地调用按照我们代码库中上述行的预期工作。删除导入后,我们就可以部署 agian 函数了。
一些 GCP 错误范围很广。
我的解决方案是我的
go.mod
文件有 go 1.14
,而 GCP 仅支持 go 1.11
或 go 1.13
Node.js 环境的问题是它们将依赖项本地存储在项目目录中。
基本上,在部署函数之前,您需要先删除node_modules目录,然后将函数部署到云端。