Azure上的Node.js:服务器在第一个请求之前未启动

时间:2019-03-17 13:40:42

标签: node.js azure express

我有一个奇怪的问题,当开始收听时,我运行以下功能:

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);
});

问题是该函数没有在第一个请求之前运行(因此第一个请求始终失败),我是否缺少某些东西?
谢谢!

1 个答案:

答案 0 :(得分:1)

您需要先scale up进行Web应用服务计划,然后才能启用始终在线。默认情况下,如果应用程序闲置了一段时间,则会将其卸载。这样可以节省系统资源。在“基本”或“标准”模式下,可以启用“始终打开”以始终保持应用程序加载。如果您的应用程序运行连续WebJobs或运行使用CRON表达式触发的WebJobs,则应启用Always On,否则Web作业可能无法可靠运行。免费的Azure Web应用程序不支持Always On。

https://docs.microsoft.com/en-us/azure/app-service/web-sites-configure