Google应用程序引擎502错误:服务器错误Node.js

Google应用程序引擎502错误:服务器错误Node.js,node.js,google-app-engine,google-cloud-platform,Node.js,Google App Engine,Google Cloud Platform,我在谷歌的appengine服务中部署了一个应用程序,这是一个简单的Express.js服务器,提供使用handlebar.js呈现的动态页面。在几个小时内一切都很好(它正在提供页面),突然它开始回复以下消息: 502 错误:服务器错误 服务器遇到临时错误,无法完成您的请求。 请在30秒后重试。 我尝试了以下所有方法来修复它: 停止/重新启动服务(从控制台) 重新部署(通过命令“gcloud app Deploy”从cmd) 读取日志(从cmd读取:“gcloud app logs Read”

我在谷歌的appengine服务中部署了一个应用程序,这是一个简单的Express.js服务器,提供使用handlebar.js呈现的动态页面。在几个小时内一切都很好(它正在提供页面),突然它开始回复以下消息:

502 错误:服务器错误 服务器遇到临时错误,无法完成您的请求。 请在30秒后重试。

我尝试了以下所有方法来修复它:

  • 停止/重新启动服务(从控制台)
  • 重新部署(通过命令“gcloud app Deploy”从cmd)
  • 读取日志(从cmd读取:“gcloud app logs Read”)
    • 注意:这表明服务器当前正在侦听端口8080
  • 禁用/启用应用程序引擎Api(从控制台)
  • 将代码重新构造为简单的“Hello world”响应并重新部署
  • 完全删除项目并在新项目中重新部署
即使是新项目的答案也是502

我的想法是:我认为谷歌的代理并没有向应用发送请求,因为它实际上是在监听,但它不会记录请求

代码如下:

App.js:

    'use strict';

const express = require('express');
const hbs = require('hbs');
const axios = require('axios');
const XLSX = require('xlsx');
const http = require('http');



const port = process.env.PORT || 8080;
const env = process.env.NODE_ENV || 'development';


let app = express();

let urls = {
  url1: **Some url**,
  url2: '**Some url2**'
};


app.set('view engine', 'hbs');

app.use(express.static('public'));    


app.get('/page1', async (req, res)=>{
  console.log('Page 1');
  try{
    let products = await getExcel(urls.url1);
    res.render('page1.hbs', {
      products: products,
    });
  }catch(err){
    console.log(err);
    res.status(500).send('Oops! found an Error.')
  }
});

app.get('/page2', async (req, res)=>{
    console.log('Page 2');
    try{
      let products = await getExcel(urls.url2);
      res.render('page2.hbs', {
        products: products,
      });
    }catch(err){
      console.log(err);
      res.status(500).send('Oops! found an Error.')
    }
 });

app.get('/', (req,res)=>{
  console.log('Home');
  res.render('smx-home.hbs',{});
});


const getExcel = async (url) =>{
**DO SOME STUFF HERE THAT RETURNS AN OBJECT OR AN ERROR** 
}    


app.listen(port, ()=>{
  console.log(`${env} Server listening on port ${port}`);
});
package.json:

{
  "name": "suplementos",
  "version": "1.0.0",
  "description": "Suplementos Cajeme y SuplementosMX",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Wake",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.18.0",
    "express": "^4.16.3",
    "hbs": "^4.0.1",
    "xlsx": "^0.12.13"
  }
}
app.yaml

runtime: nodejs
env: flex

automatic_scaling:
  min_num_instances: 1

resources:
  cpu: 1
  memory_gb: 1
  disk_size_gb: 10
我别无选择…有什么想法吗


奇怪的是,在这开始之前它已经平稳运行了几个小时,现在它只回答502。

有必要在底部声明一个路由,返回http状态200

请注意声明路由的顺序,以免被覆盖

例如:

    app.get('/', function (req, res) {
      res.status(200).send('Health Check');
    });  

看起来技术支持可以帮助你。你能用你的项目号在谷歌上发一篇帖子吗?完成后请告诉我,案例号是什么。