“gcloud app deploy”期间“功能:未找到”

时间:2017-06-25 13:59:59

标签: node.js google-app-engine gcloud google-cloud-functions actions-on-google

我不熟悉将动作webhooks部署到GCP中,并尝试从此处简单部署演示api.ai webhook:https://github.com/actions-on-google/apiai-webhook-template-nodejs

使用此处的说明:https://developers.google.com/actions/samples/

虽然我最近注意到此页面上写着“这些说明假设您使用的是Google App Engine”。在样本/入门页面中不是一个有用的句子......

当我运行gcloud app deploy时,它会做几分钟的事情,然后结束:

(请注意,我隐藏了一些带有'x'的键的部分。不确定什么是敏感的,如果有的话):

$ gcloud app deploy
You are about to deploy the following services:
 - level-up-xxxx/default/20170625t233004 (from [/home/peter/Projects__/xxxx/webhook/app.yaml])
     Deploying to URL: [https://level-up-xxxx.appspot.com]

Do you want to continue (Y/n)?  y

If this is your first deployment, this may take a while...done.                                                        

Beginning deployment of service [default]...
Building and pushing image for service [default]

... {DETAILS OMITTED FROM HERE} ...

57fff86xxxxx: Pushed
c4a3d3bxxxxx: Pushed
90c3ed3xxxxx: Pushed
latest: digest: sha256:6d06015bb56b73145d91884a477463d5bef03dfb24882a07ce46492bxxxxxxxx size: 2626
DONE
------------------------------------------------------------------------------------------------------------------------

Updating service [default]...failed.                                                                                   
ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:

> level-up-xxxx@0.0.1 start /app
> functions deploy level-up-xxxx --trigger-http

sh: 1: functions: not found

npm ERR! Linux 3.16.0-4-amd64
npm ERR! argv "/nodejs/bin/node" "/nodejs/bin/npm" "start"
npm ERR! node v6.0.0
npm ERR! npm  v3.8.6
...

这似乎发生在尝试“npm start”(大概是在GCP服务器上,对吗?)

什么是functions

这个应该存在于我正在部署的GCP环境中吗?

似乎我不是遇到这个的唯一一个人。我正在尝试的演示的github页面也是一个问题:https://github.com/actions-on-google/apiai-webhook-template-nodejs/issues/1

UPDATE1:我发现我没有为相关的GCP项目启用“云功能API”。奇怪的是,启用此功能似乎已经没有区别。 (当被发现时,我认为这肯定是我的问题!但是没有......)

UPDATE2:我还发现这里的'deploy'命令似乎需要(导出的)函数名,而不是项目名,因此我已经从“deploy level-up-xxx”更改为“deploy levelUpXxxx”。但仍然没有快乐。

UPDATE3:我遇到了这个'较旧'的命令序列,仍然记录在:https://cloud.google.com/functions/docs/tutorials/http 在部署时似乎成功 :(但我还没有确认这与'app deploy'足够等效,我正努力工作)

(@囚徒告诉我这些不是'年长',而是完全不同的GCP ......)

$ gsutil mb gs://level-up-xxxx
$ gcloud beta functions deploy LevelUpXxxx --stage-bucket level-up-xxxx --trigger-http

仍然希望/需要让广告(非测试版)“gcloud app deploy”工作......

对于发生的事情非常困惑......

我在桌面上使用的npm版本是否存在问题?即太新了?  这可能是错误的打包项目,并且在GCP内部不满意吗?只是一个理论......我真的不知道这一切是如何起作用的......

分辨率

事实证明,这里的主要罪魁祸首是(在撰写本文时),https://developers.google.com/actions/samples/上的演示说明表示使用gcloud app,而演示本身似乎已经'升级'(?)使用gcloud beta functions

如果您不熟悉GCP,那会非常困惑。 (谷歌最好投入更多资源来保持他们的doco最新......)

感谢指针@Prisoner。答案被授予。

1 个答案:

答案 0 :(得分:2)

您正在混合两种不同的无服务器Google云环境。

gcloud app向Google App Engine部署了一些内容。您没有显示所有配置文件,但您可能需要更多配置才能部署到App Engine环境。 (您可以部署到运行节点的App Engine,但还有更多内容。)

gcloud beta functions向Google Cloud Functions部署了一些内容,该功能仍处于测试阶段。 (但请记住...... Google已经保留了多年来在测试版中运行良好的产品和服务......)