使用网络预览时,我的node.js express服务器应用程序在Google App Engine上的工作原理像冠军。但是,当我尝试进行部署时(通常是通过Google Cloud Console进行部署),该应用程序将无法再使用。当我点击URL时,出现“ 500错误:服务器错误服务器遇到错误,无法完成您的请求。请在30秒内重试。” 30秒,30分钟,30小时以后-仍然是同样的错误。非常令人困惑,因为该Web应用程序在我的本地计算机上以及在GCP上使用Web预览时都可以正常工作-只是在尝试进行最终部署时。
在本地计算机上完美运行。将代码上传到我在git上的存储库中,然后克隆到我的App Engine项目中,然后安装npm,然后在Google App Engine(GAE)上启动npm。 Web预览签出就可以了。 Gcloud应用部署将文件正确上传到区域中并提供URL。那时候它不起作用-我收到500错误。使用“ gcloud应用程序日志尾号-s默认值”查看了错误消息。
const express = require('express');
const path = require('path');
/* Tutorial: https://www.youtube.com/watch?v=L72fhGm1tfE */
const server2 = express();
oneHundredTenDays = 60*1000*60*24*110; // cache (110 days)
// Set a static folder
server2.use(express.static(path.join(__dirname, 'public'), {maxAge: oneHundredTenDays}));
const PORT = process.env.PORT || 5006;
server2.listen(PORT, () => console.log(`Express server2 started on port ${PORT}`));
handlers:
- url: /.*
script: auto
secure: always
redirect_http_response_code: 301
runtime: nodejs10
{
"name": "expressserver2",
"version": "1.0.0",
"description": "https://www.youtube.com/watch?v=L72fhGm1tfE",
"main": "app.js",
"scripts": {
"startSecure": "node appHttps",
"devSecure": "nodemon appHttps",
"startUnsecure": "node app",
"devUnsecure": "nodemon app"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.1"
},
"devDependencies": {
"nodemon": "^1.19.1"
}
}
409 rm -rf expressServer2
410 git clone https://github.com/xxxxxxxxxx/expressServer2
411 cd expressServer2/
412 cp ../expressServer1/app.yaml .
413 export PORT=9088 && npm install
414 npm run startd
415 more package.json
416 npm run startUnsecure
417 gcloud app create
418 gcloud app deploy
419 gcloud app logs tail -s default
我希望看到一个正在运行的Web应用程序(正如我在上面的命令416之后执行Web预览时所看到的那样)。现在,对于发出命令419后出现的错误:
2019-09-11 21:04:50 default[20190911t170310] Error: Cannot find module '/srv/server.js' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) at Function.Module._load (internal/modules/cjs/loader.js:562:25) at Function.Module.runMain (internal/modules/cjs/loader.js:829:12) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
2019-09-11 21:04:50 default[20190911t170310] "GET /favicon.ico HTTP/1.1" 500
2019-09-11 21:04:51 default[20190911t170310] internal/modules/cjs/loader.js:638
2019-09-11 21:04:51 default[20190911t170310] throw err;
2019-09-11 21:04:51 default[20190911t170310] ^
2019-09-11 21:04:51 default[20190911t170310]
2019-09-11 21:04:51 default[20190911t170310] Error: Cannot find module '/srv/server.js' at Function.Module._resolveF
我认为这个网站图标是鲱鱼。问题在于应用程序找不到'/ srv / server.js'。我现在不知所措。 Google部署服务器环境确实与Web预览版本有什么不同吗?
顺便说一句:如果您认为其中的任何一个重要问题,它所提供的页面都不是完全静态的-一些简单的javascript-一个文本框输入和一些图像。
我会推荐任何潜在顾客。
答案 0 :(得分:1)
因为您遇到了
错误:找不到模块'/srv/server.js'
尝试将以下行添加到 package.json 文件中的“scripts”
:
"start": "node app.js",
请记住,当 Google App Engine 为您的应用程序创建新实例时,该实例必须首先加载处理请求所需的库和资源。 / p>
如果仅修改您的 package.json 文件不能解决问题,则原因可能是您没有任何准备好处理的活动实例请求,这会导致它们在 App Engine 将代码加载到新实例中时超时(请参阅此post中描述的问题)。
在这种情况下,您可能要reduce the duration个加载请求。另外,即使没有流量,您也可以使用warmup requests使实例保持活动状态。
让我知道是否有帮助。