在gcloud上调试节点应用程序以修复500服务器错误

时间:2016-05-13 19:26:29

标签: node.js google-app-engine google-compute-engine gcloud gcloud-node

我们有一个庞大的小节点应用程序,并希望尝试使用谷歌云部署套件使其联机,但是我们的部署总是会导致出现500服务器错误的页面。

通常情况下,我会提供更多信息,错误等,但我希望有更多知识渊博的人可以指导我在哪里找到这些信息。当我们gcloud preview app deploy,只有一堆preparingpushing以及最后的deployed module [default] to ...消息时,gcloud终端中没有任何注释。但是,导航到URL会给我们一个500服务器错误:

Error: Server Error

The server encountered an error and could not complete your request.
Please try again in 30 seconds.

看一下响应标题并没有提供更多信息,所以我已经查看了stackdriver / logs,但唯一有一堆/_ah/background GET没有任何迹象我们的要求。

我们在哪里可以开始调试此问题?它是一个节点应用程序,具有节点/表达后端,反应前端和webpack构建器。

编辑:这是应用引擎信息中心的screenshot

我们的app.yaml

runtime: nodejs
vm: true

skip_files:
  - ^(.*/)?.*/node_modules/.*$

我们的package.json

  "scripts": {
    "test": "karma start",
    "watch": "watch 'npm run test' client/",
    "clean": "rm -rf dist",
    "webpack-prod": "NODE_ENV=production webpack --progress -p",
    "server-prod": "NODE_ENV=production node ./index.js",
    "prestart": "npm run webpack-prod",
    "start": "npm run server-prod",
  },

3 个答案:

答案 0 :(得分:2)

显然,Node应用程序可能引起的一个问题是您没有运行生产版本。我刚从Heroku来到GCP,后者为我的React应用自动创建了生产版本。我从GCP中收到500个错误,日志中没有可理解的信息。我找到了this GitHub issue,运行了npm run build,并将我的app.yaml文件更改为

runtime: nodejs10

handlers:
 - url: /
   static_files: build/index.html
   upload: build/index.html

 - url: /(.*)
   static_files: build/\1
   upload: build/(.*)

就成功了。无论如何,我把它放在这里是因为app.yaml和您的构建过程可能是导致500个神秘错误的原因之一。

编辑:只是为了避免误导任何人,如果您想在React应用程序中支持多条路线,实际上您需要一个app.yaml文件,该文件看起来更像是this问题(是,问题;它会自行回答)。

答案 1 :(得分:1)

这是检查Google Cloud上日志的最新命令

gcloud app logs read

答案 2 :(得分:0)

将来,gcloud preview app logs read会在这里为您提供日志,以显示进程崩溃的原因(假设这是问题)。作为部署的一部分,我们正在努力解决这些错误。