0

我正在 node.js 上开发一个服务器应用程序。在使用nodemon时,我不能忽略添加一些功能会大大减慢重启的事实。我发现了一个不重新启动 ngrok 隧道的技巧,方法是运行一个单独的脚本来创建隧道,然后执行nodemon将 url 作为 env 变量传递,简而言之,它看起来像这样:

ngrok
  .connect(options)
  .then(url => {
    // log success
    nodemon({
      script: "./bin/www",
      exec: `NGROK_URL=${url} node`,
    });
  })

但是,可能有更多的设置步骤是不想在每次 nodemon 重新启动时重做的,例如启动 Telegram 机器人(是的,我们可以在上面的脚本中启动 webhook,但如果我们使用 Bot 对象的构造函数,它不能作为环境变量传递)或连接到 Mongo DB(同样,连接是一个对象)。

我想知道这些应该只启动一次的对象(因为它们的启动需要时间)是否可以以某种方式传递给由nodemon(或者ts-node-dev因为我正在使用 TypeScript)重新启动的脚本?或者至少如果我可以创建一个 Mongo 连接(因为它比任何其他启动都需要更多时间)并在重新启动时保持它(可能通过某个池中的某个 id 找到已建立的连接)?

我能想到的唯一方法是运行一个单独的服务并通过 http 进行一些通信。似乎有点丑陋的解决方案(至少使日志记录和调试复杂化),但在某些情况下(微服务架构)可能没问题。

4

0 回答 0