这是一种优雅的方法来确保只运行一个nodejs应用程序实例吗? 我尝试使用pidlock npm,但是,它似乎只适用于* nix系统。 是否可以使用互斥锁? 感谢
答案 0 :(得分:1)
我刚刚找到了single-instance
库,该库适用于所有平台。我可以确认它在Windows上能很好地工作。
您可以通过npm i single-instance
进行安装,并且需要这样包装应用程序代码:
const SingleInstance = require('single-instance');
const locker = new SingleInstance('my-app-name');
locker.lock().then(() => {
// Your application code goes here
}).catch(err => {
// This block will be executed if the app is already running
console.log(err); // it will print out 'An application is already running'
});
如果我正确理解其源代码,它将使用套接字来实现锁定:如果可以连接到套接字,则表明该应用程序已在运行。如果无法连接,则会创建套接字。