Promise를 사용해 Node.js에서 경로가 파일인지 확인한다. 에러가 나면 false를 반환하므로 존재 여부 확인에도 쓸 수 있다.
매번 fs.stat()를 try-catch로 감싸기 귀찮을 때 이런 작은 helper가 있으면 편하다. 선택적 설정 파일 확인, 사용자가 입력한 경로 검증, 임시 파일 정리 전 체크 같은 곳에 그대로 넣기 좋다.
import fs from "node:fs/promises";
function isFile(path: string): Promise<boolean> { return fs .stat(path) .then((stats) => stats.isFile()) .catch(() => false);}이런 상황에 맞다
조건이 단순히 “경로가 존재하고, 디렉터리가 아니라 일반 파일이어야 한다”일 때 잘 맞는다. 호출부에서 매번 예외 처리를 반복하지 않아도 되므로 분기가 짧아진다.
왜 이런 형태가 편한가
fs.stat()의 결과에서 stats.isFile()만 꺼내고, 예외는 전부 false로 접는다. 경로 없음과 파일 아님을 둘 다 “사용 불가”로 같은 레벨에서 다뤄도 된다면 이 정도 API가 가장 다루기 쉽다.
주의할 점
이 helper는 어떤 에러가 났는지 호출부에 넘기지 않는다. 즉, 파일이 없는 경우와 권한 오류를 구분하지 않는다. 그 차이가 필요하면 catch에서 에러 코드를 확인하는 쪽이 낫다. 심볼릭 링크 자체를 판별하고 싶다면 stat() 대신 lstat()를 써야 한다.
hsb.horse