ys memos

Blog

Node.js+TypeScriptでfs/promisesによってファイルの存在チェック


nodejs

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などのエラーコードもどこかにまとまってると扱いやすいなぁなんて思いました。


関連タグを探す