node.js - azure 上的 Nodejs:服务器未在第一个请求之前启动
问题描述
我有一个奇怪的问题,开始收听时我运行以下函数:
app.listen(process.env.PORT || 3000, async function () {
await db.init().catch(err => {
console.error(err);
console.error("Shutting down because there was an error setting up the database.");
process.exit(1);
});
await recordsDb.init().catch(err => {
console.error(err);
console.error("Shutting down because there was an error setting up the records database.");
process.exit(1);
});
//this db object will be used by controllers..
app.set('db',db);
});
问题是该函数在第一个请求之前没有运行(所以第一个请求总是失败),我错过了什么吗?
谢谢!
解决方案
您需要先扩展您的 Web 应用服务计划,然后才能启用Always On。默认情况下,如果应用程序空闲一段时间,则会卸载它们。这使系统可以节省资源。在基本或标准模式下,您可以启用 Always On 以始终保持应用程序加载。如果您的应用程序运行连续 WebJobs 或运行使用 CRON 表达式触发的 WebJobs,则应启用 Always On,否则 Web 作业可能无法可靠运行。免费的 Azure Web 应用程序不支持 Always On。
https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure
推荐阅读
- azure - 如何在 Powershell 中授予管理员对 Azure AAD 应用程序的许可?
- php - 带有大表的 PHP PDO
- javascript - 单击旁边的按钮时如何交叉?
- python - 在数据框中的两个列表中检测和计数模式
- python - 检查两个函数是否相同
- maven - Intellij 识别 TestNG 注释 @Test 但不识别(优先级 = #)
- android - 底部导航视图图标颜色不准确
- java - 使用 PDFBox 创建文件并下载 [已解决]
- javascript - 即使电话号码正确,asp.net 中的正则表达式验证也会显示错误消息
- c - CMake:如何对多个文件运行自定义命令以生成源文件?