NeDBでリネームエラーがポップアップで出る場合の対処法
※本ページはプロモーションが含まれていますNeDBで同じファイルに間隔を開けずに連続でアクセスすると、「Error:EPERM:operation not permitted, rename」というポップアップエラーが出て処理が止まってしまいます。
NeDBはデータベースに読み書きする際、整合性を保つためにファイルの末尾に「~」をつけたファイルを一旦作成するのですが、その作成中やリネーム後に次のアクセスがきてしまうと「~」ファイルを前の処理がリネームしてしまいファイル自体がなかったり、書き込み権限をロックしていたりしているのが原因だと思います。
このエラーは、DataStoreをnewする時に「autoload」を「true」にするとエラーがthrowされてしまうので、「onload」を追加し、load後のエラー処理を自分で書けばポップアップエラーが出なくなります。
const db = new DataStore({ filename: 'path/to/file', autoload: true, onload: (error) => { if (error) { console.log(error); } }, });