【Node.js】ライブラリで簡単に多重起動を防止する
こんにちは、フリーランスエンジニアの太田雅昭です。
多重起動防止
多重起動防止には、一般的には.lockファイルを使用するようです。ただ.lockの解放などを考えると、毎回実装するのはなかなか面倒そう。そう思いChatGPT様に教えていただきました。
proper-lockfile
proper-lockfileを用います。
import { lock } from 'proper-lockfile';
lock('main', { realpath: false }) // main.lockディレクトリが生成される
.then(async (release) => {
console.log('Start');
await new Promise((resolve) => setTimeout(resolve, 3_000));
console.log('Finished');
return await release();
})
.catch((err) => {
console.error(err.message);
});
原則はrelease()を返すべきですが、返さなくても自動で終了時に解放されるようです。
Ubuntuでは不具合が?
Ubuntuで使用しているのですが、頻繁に以下のエラーとなります
Lock file is already being held
以下のissuesが建てられていました。
https://github.com/moxystudio/node-proper-lockfile/issues/92
どうもUbuntuだと厳しいようですね。