首页 > 解决方案 > 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);
});

问题是该函数在第一个请求之前没有运行(所以第一个请求总是失败),我错过了什么吗?
谢谢!

标签: node.jsazureexpress

解决方案


您需要先扩展您的 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


推荐阅读