node.js - Azure 上的 Node、Express API 应用程序给出容器启动失败错误
问题描述
我有一个现有的 Node 和 Express API 应用程序,我正在尝试将其部署到 Azure WebApps。部署顺利。但是当我尝试访问 API 时,什么也没有发生。当我检查日志时,我看到以下内容:“容器 chdemoapi_0_f2df43ac 没有响应端口上的 HTTP ping:8080,站点启动失败”“容器 chdemoapi_0_4e583132 没有响应端口上的 HTTP ping:8080,站点启动失败”这是如何我的 index.js 文件看起来:
const config = require('./common/config/env.config.js');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const AuthorizationRouter = require('./auth/routes.config');
const LeadsRouter = require('./leads/routes.config');
const DemoRouter = require('./demo/routes.config');
const MentorRouter = require('./mentors/routes.config');
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
res.header('Access-Control-Expose-Headers', 'Content-Length');
res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range, x-access-token');
if (req.method === 'OPTIONS') {
return res.send(200);
} else {
return next();
}
});
app.use(bodyParser.json());
AuthorizationRouter.routesConfig(app);
LeadsRouter.routesConfig(app);
DemoRouter.routesConfig(app);
MentorRouter.routesConfig(app);
app.listen(config.port, function () {
console.log('app listening at port %s', config.port);
});
这是我的 env.config 文件的外观:
module.exports = { "port": 3600,
//"appEndpoint": "http://localhost:3600",
//"apiEndpoint": "http://localhost:3600",
"appEndpoint": "https://chdemoapi.azurewebsites.net:3600",
"apiEndpoint": "https://chdemoapi.azurewebsites.net:3600",
"jwt_expiration_in_seconds": 36000,
"environment": "dev",
};
这是我的 package.json 文件的外观:
{"name": "ch-demo-services",
"version": "1.0.0",
"description": "microservices for demo module",
"main": "index.js",
"start":"node index.js",
"scripts": {"test":
"echo \"Error: no test specified\" && exit 1"},
"author": "", "license": "ISC",
"dependencies": { "express": "^4.17.1", "generate-password": "^1.5.1",
"jsonwebtoken": "^8.5.1", "mailgen": "^2.0.13", "moment": "^2.27.0", "mongoose":
"^5.9.18", "nodemailer": "^6.4.10", "uuid": "^8.1.0" } }
在应用程序设置中,我还添加了 WEBSITES_PORT:3600。在我的本地主机中,我访问的 API 如下: http://localhost:3600/listDemoSlots 部署到 Azure 后,我尝试访问它们,例如:https://chdemoapi.azurewebsites.net:3600/listDemoSlots。但是什么也没发生,我看到上面的日志。我的设置有什么问题。
解决方案
从你的错误信息来看,是端口问题。
Azure Web App 服务仅支持 http 端口 80 和 https 端口 443。建议更换https://chdemoapi.azurewebsites.net:3600
为https://chdemoapi.azurewebsites.net:443
. 然后重新启动应用程序。
推荐阅读
- graphql - React Apollo Client Mutation 如何上传图片
- assembly - 处理来自辅助 PIC 的 x86 IRQ:EOI 订单重要吗?
- python - Python:组合和重新排列数组
- r - 如何使用空白 df 和列表来加快 R 中的处理时间
- python-3.x - 如何在 Cassandra Python 驱动程序中存储 PagingState?
- node.js - 如何防止用户在注册后返回浏览器?
- javascript - 替换数组Javascript中多个索引处的内容
- image - Keras 中训练 CNN 的 input_shape 是否必须与测试数据相同?
- scala - 查找包含最多“a”字母的字符串
- python-3.x - Ursina 引擎不从 .mtl 文件加载纹理