【问题标题】:How to run function when NodeJS server starts?NodeJS服务器启动时如何运行函数?
【发布时间】:2021-05-26 21:39:27
【问题描述】:

你好我需要在服务器第一次启动时运行一个函数,基本上我想在数据库中放一些常量数据。是的,我可以为此只使用一个内存中的常量,但我宁愿将它放在我的数据库中,因为我计划将来在我的其他一些服务器上使用该数据。问题是,我正在使用 NextJS,并且我想在 Vercel 平台上托管,所以我不想使用自定义的 server.js 文件。

有没有办法在 NextJS/NodeJS 中服务器第一次启动时只运行一次函数?

【问题讨论】:

  • 您可以将该函数调用到server.listen()app.listen()的回调函数中
  • @DhavalDarji 在没有自定义服务器的情况下如何做到这一点?能否附上代码示例?

标签: javascript node.js next.js


【解决方案1】:

所以 Vercel 平台是无服务器的:https://vercel.com/docs/serverless-functions/introduction

正如文档中所述,您可以像这样创建无服务器函数:

module.exports = (req, res) => {
  res.send("Hello World");
}

如果你想在构建完成后运行一个函数,你可以看看这个答案:

Next.js run function/script when starting app

您也可以使用getServerSideProps 在页面呈现之前(在服务器端)运行代码,如果这就是您对“应用程序启动”的意思。

https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering

【讨论】:

  • 当使用链接问题的解决方案时,每次热重载发生时该函数都会运行两次。虽然我猜在生产中它应该只运行一次(嗯,出于某种原因两次)?
  • @randomprogramming “应用程序启动”是什么意思?链接的问题在构建完成后运行。如果您希望根据请求运行某些功能,您可以在 getServerSideProps 中执行此操作。我更新了我的答案。
  • 我的意思是应用程序构建,但我想知道这个解决方案将如何在生产环境中工作?由于现在每次打开新页面时都会运行该功能。每次新用户打开页面时,生产中的功能都会触发吗?
  • 不,构建完成一次。当应用程序在其平台上部署时,您也可以在 Vercel 日志中看到它。 @随机编程
  • 好的,这就是我想知道的,谢谢!
猜你喜欢
  • 2012-04-04
  • 2020-10-03
  • 1970-01-01
  • 2014-09-27
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2010-11-29
相关资源
最近更新 更多