Google Cloud App Engine 上的 Nodejs 应用程序未启动

Posted

技术标签:

【中文标题】Google Cloud App Engine 上的 Nodejs 应用程序未启动【英文标题】:Nodejs app on Google Cloud App Engine not starting 【发布时间】:2019-04-27 23:48:45 【问题描述】:

早安,

我的非常基本的 Nodejs 应用程序部署在 Google Cloud App Engine 实例上没有启动。该应用程序在本地运行,使用app deploy 的部署运行没有错误 - 在应用程序实例上,当通​​过 Cloud shell 手动启动时,应用程序成功运行(使用>npm start)。 但是,一旦关闭 Cloud Shell,我的应用程序就死了。我错过了什么?如何启动应用以永久运行?

该应用由

bot4.js 文件, npm 依赖项 app.yaml package.json

app.yaml:

runtime: nodejs8
handlers:
- url: /
  script: auto

package.json:


  "name": "blexplorer",
  "version": "1.0.0",
  "description": "",
  "main": "bot4.js",
  "scripts": 
    "start": "node bot4.js"
  ,
  "author": "oystersauce",
  "license": "ISC",
  "dependencies": 
    "discord.js": "^11.4.2",
    "request": "^2.88.0"
  

同样,应用程序在通过 Cloud Shell 启动时运行良好,但在 Cloud Shell 关闭后不再运行。此外,它是一个超级简单的不和谐机器人 - 因此没有任何前端。

编辑: 这就是我认为我手动启动应用程序的方式 - 但我在这里所做的是在云外壳中而不是在应用程序实例上启动应用程序:

这是我部署应用程序的方式:

【问题讨论】:

有些东西没有加起来 - 云外壳通常与 GAE 无关,无论您在云外壳中执行的任何与 GAE 相关的事情,您都应该能够在本地计算机上执行。启动 GAE 应用程序实例不是其中之一。那么您究竟如何“手动”启动您的应用程序? @DanCornilescu 感谢您的评论。我添加了一张显示这一切的图片。据我了解,“true-study-159312”是我的应用程序实例的名称。但不是吗?那我开始做什么? 我突然意识到我正在使用云存储中的文件真正在云外壳中启动应用程序 - 那不是应用程序。所以难怪当我关闭 shell 时应用程序没有运行。再次更新问题。 是的,你完全正确。 【参考方案1】:

从 GAE 的角度来看,云 shell 只是“本地”开发机器上的一个 shell,它恰好托管在云中。运行云shell的实例与GAE没有任何特殊关系。

您在运行npm start 时所做的实际上并不是启动 GAE 实例,您只是在启动服务的“本地”执行,就像您在本地计算机上执行相同操作一样。

根据您的配置,GAE 应该会在收到请求后立即自动启动您的应用。在带有前端的应用程序上,只需单击您在快照中圈出的链接即可使用它。由于您的没有前端,它可能刚刚启动,但您必须依靠仪表板信息和/或您的应用程序的日志来确认它正在运行。

【讨论】:

以上是关于Google Cloud App Engine 上的 Nodejs 应用程序未启动的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google Cloud App Engine 上运行 PHP 服务

Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage

Google Cloud App Engine 文件存储备份

Google App Engine - 大查询 - Python 找不到库 google.cloud

如何在 Google Cloud Functions 和 Google App Engine 之间进行选择?

Google Cloud App Engine 上的 Nodejs 应用程序未启动