728x90
반응형
에러
if (files) {
for (const file of files) {
formData.append(file.fieldname, fs.createReadStream(file.path), { filename: file.originalname });
}
formData.append('data', body);
fs.rmdir('uploads/run', { recursive: true }, err => {
if (err) {
console.log('file 삭제 오류: ', err);
} else {
console.log('file 삭제 완료');
}
});
}
솔직히 말해서 ENOENT: no such file or directory, open 'x'라는 에러문구는 심플하다. 경로에 적힌 대로 갔는데 파일이 없다는 것이다.
하지만 위 코드를 보면 알겠지만 fs.rmdir가 실행되는 순서는 formData로 파일들을 이미 append 해준 다음이다. 순서에 문제가 있는 줄 알고 if문 밖에 fs.rmdir을 해봐도 똑같은 현상이 나온다.
웃긴건 처음 실행할 때는 오류 없이 잘 동작한다.
원인
디렉토리 자체를 삭제하면서 일어나는 에러였다. 처음 실행할 때는 디렉토리가 존재하기 때문에 문제가 없었던 것이다. 두번째 실행에서는 디렉토리 자체가 없어졌기 때문에 오류 메시지를 볼 수 있었다.
해결
디렉토리는 삭제하지 않으면서 디렉토리 안에 있는 파일들을 삭제하는 방법이 무엇 있을까?
fs-extra 모듈을 사용하는 것이다.
https://www.npmjs.com/package/fs-extra
fsExtra.emptyDirSync('uploads/run');
아주 간단하게 file들만 삭제가 되어 삭제 로직이 잘 돌아간다.
728x90
반응형
'All Side > Runtime > NodeJS' 카테고리의 다른 글
NodeJS Version nvm을 통해 올리기 (0) | 2024.07.21 |
---|---|
[NodeJS] gts로 간편하게 TypeScript 프로젝트 생성하기 - 라이브러리 추천 (0) | 2023.05.02 |
[express] middleware 결과 다음으로 넘겨주기 - next()에 parameters 넣어주기?! (0) | 2023.03.08 |
[YarnBerry] yarn으로 express 초기세팅 오류 해결 - Cannot find module 'x' or its corresponding type declarations.ts(2307) (0) | 2023.03.07 |
인코딩 된 문자열 생성하기 (0) | 2023.02.14 |
댓글