有没有办法“重新启动”node.js 应用程序的一部分,同时保留其他部分数据库连接,一些承诺?

问题描述

我正在 node.js 上开发服务器应用程序。在使用 nodemon 时,我不能忽视添加一些功能会大大减慢重启速度的事实。我发现 a trick 没有通过运行单独的脚本来重新启动 ngrok 隧道,该脚本创建隧道然后执行 nodemon 将 url 作为环境变量传递,简而言之,它看起来像这样:

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

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

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...