我正在 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 进行一些通信。似乎有点丑陋的解决方案(至少使日志记录和调试复杂化),但在某些情况下(微服务架构)可能没问题。