기존의 폴더를 .gitignore를 하여 디플로이시 이미지를 저장하는 디렉토리가 업로드 되지 않아 이미지가 저장되지 않는 문제가 발생하였다.
다음과 같은 코드로 폴더가 없을 때, 생성하도록 하였지만 오류가 발생하였다.
fs.readdir('public/v1/uploads', (error) => {
// uploads 폴더 없으면 생성
if (error) {
fs.mkdirSync('public/v1/uploads');
}
});
node 서버가 실행될 때, fs로 'public/v1/uploads'
디렉토리를 읽지 못해 에러가 발생하면 폴더를 만들어라! 라는 명령을 주었지만, 실행되지 않았다.
그 이유는 'public/v1/uploads'
의 상위 디렉토리인 'public/v1/
가 없어 에러가 발생한 것이다. 이를 재귀로 구현해야 하는지 고민하던 찰나, 검색을 통해 { recursive: true }
이러한 옵션으로 손쉽게 폴더를 만들 수 있다는 것을 알게 되었다.
fs.readdir('public/v1/uploads', (error) => {
// uploads 폴더 없으면 생성
if (error) {
fs.mkdirSync('public/v1/uploads', { recursive: true });
}
});
recursive: true
옵션을 주게 되면, 상위 디렉토리가 없더라도 한번에 생성할 수 있게 해준다.
이 기능은 Node.js 10.12
부터 생긴 기능이다.