2023/12/10
はじめに
TypeScript (Node.js)を使ってファイルが存在するかをチェックしたい。
fsパッケージには直接的な fs.existsSyncがあるのだが、fs/promisesにはそれが存在しない。
そこで、fs/promisesを使ってファイルの存在を確認するコードをメモしておく。
コード
ここでは、 checkFileExistence(): Promise<boolean>として関数にまとめ、使いやすくする。
.catch()の全てを resolve(false)してもいいが、ここではより安全性のためe.codeをチェックする。
async function checkFileExistence(): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
access(filePath, constants.F_OK)
.then(() => resolve(true))
.catch((e) => {
if (e.code === 'ENOENT') resolve(false);
reject(e);
});
});
}
おわりに
直接的なAPIは存在しないものの、案外すんなりと使えますね。
ENOENTなどのエラーコードもどこかにまとまってると扱いやすいなぁなんて思いました。