GCloud错误:源代码大小超出限制

时间:2017-07-14 15:07:37

标签: google-cloud-platform google-cloud-storage gcloud google-cloud-functions

我正在进行api.ai tutorial的基本实现和会话设置教程,以制作聊天机器人,当我尝试使用命令部署该功能时:

var dateNow = new Date();
dateNow.setUTCHours(0,0,0,0);
var dateToISO = dateNow.toISOString();

(其中' venky-bb7c4.appspot.com'是bucket_name) 它返回以下错误消息:

gcloud beta functions deploy --stage-bucket venky-bb7c4.appspot.com --trigger-http

我已搜索但未找到任何答案,我不知道错误在哪里。 这是教程中出现的JS文件:

ERROR: (gcloud.beta.functions.deploy) OperationError: code=3, message=Source code size exceeds the limit

5 个答案:

答案 0 :(得分:3)

该命令使用当前目录的整个内容(node_modules子目录除外)创建zip,而不仅仅是JS文件(这是因为您的函数可能使用其他资源)。

您看到的错误是因为目录中(未压缩)文件的大小超过512MB。

解决此问题的最简单方法是将.js文件移动到自己的目录并从那里进行部署(如果希望工作目录不同,可以使用--local-path指向包含源文件的目录来自具有功能源的目录。)

答案 1 :(得分:1)

这些都不适合我。我能够解决这个问题的方法是确保我从项目目录(包含index.js的目录)运行部署

答案 2 :(得分:0)

我尝试使用源选项或从 index.js 文件夹部署,但仍然存在不同的问题。

如果上传的代码很大,通常会发生此错误。在我的测试中,我发现超过 100MB 会导致上述错误。

然而, 要解决此问题,有两种解决方案。

  1. 更新 .gcloudignore 以忽略您的函数不需要的文件夹
  2. 如果选项 1 没有解决,您需要在存储中创建一个存储桶并使用 --stage-bucket 选项提及它。

创建一个用于部署的新存储桶(一次)

gsutil mb my-cloud-functions-deployment-bucket

<块引用>

您创建的存储桶必须是唯一的,否则它会抛出已经创建的

部署

gcloud 函数部署subscribers-firestoreDatabaseChange
--trigger-topic firestore-database-change
--region us-central1
--runtime nodejs10
--update-env-vars "REDIS_HOST=10.128.0.2"
--stage-bucket my-cloud-functions-deployment-bucket

答案 3 :(得分:0)

我在部署云功能时遇到了类似的问题。对我有用的是指定 js 文件源文件夹。

gcloud functions deploy functionName --trigger-http **--source path_to_project_root_folder**

还要确保在 .gcloudignore 中包含所有不必要的文件夹。

答案 4 :(得分:-1)

确保包文件夹具有.gitignore文件(不包括node_modules)。

最新版本的gcloud需要它才能加载node_modules。我的代码大小从119MB增加到17Kb。

一旦我添加了.gitignore文件,也会打印日志

created .gcloudignore file. See `gcloud topic gcloudignore` for details.