Hexo .DS_Store TypeError 해결 방법

🗓 ⏰ 소요시간 3 분

오늘도 Hexo 블로그를 열심히 하던 중에 알 수 없는 에러를 만났습니다. 이것 때문에 generate 는 커녕 로컬 서버도 안되더군요. 별로 바꾼 것도 없는데 이렇게 되니 당황스러웠습니다.

1
2
ERROR Process failed: layout/.DS_Store
TypeError: Cannot read property 'compile' of undefined

.DS_Store 파일

일단 .DS_Store 파일이 뭔지 찾아봤습니다. .DS_Store 파일은 해당 폴더의 설정을 가지고 있는 파일이라고 합니다. 자동으로 생성되고 점(.) 을 붙여서 숨김파일 처리 되어있어서 평소엔 보이지 않습니다.

해결 방법

Windows

일단 Windows 에서 작업하시는 분들은 .DS_Store 파일이 나올 일은 없으나 Mac 에서 제작한 테마를 받을 경우에 테마 안에 포함되어 있는 경우가 있다고 합니다. 그럴 경우에 그냥 삭제하시면 다시는 나타나지 않을 겁니다.

Mac

첫번째 시도

Stack Overflow 에서 검색해본 결과 Hexo 3.2.0 에서만 발생하는 문제이니 3.1.1 로 다운그레이드하면 된다는 의견이 많았습니다. 하지만 백업을 해놓고 다운그레이드 했는데도 동일한 증상이 나타나더군요. 댓글들을 읽어보니 명백한 버그가 맞는 것 같네요.

두번째 시도

이번에는 그냥 아예 폴더를 없애고 다시 만들었습니다. 새 폴더에다가 hexo init 부터 시작해서 테마도 받고 플러그인도 따로 설치했습니다. 그리고 문제의 그 파일이 같이 복사되지 않도록 조심스럽게 복사를 한 결과! 동일한 증상이 계속 나타났습니다.

세번째 시도

어렵사리 만들어놓은 블로그가 안되니 참 답답하더군요. 그래서 마음이 좀 급했나 봅니다. 문제의 파일인 .DS_Store 에 대해 다시 검색해보니, .DS_Store 는 삭제해도 별 문제가 없고 다시 생성되는 파일이라는 점입니다. 그래서 그냥 문제의 파일을 삭제하고 generate 했더니 잘 됩니다… 그런데 몇번 더 해보니 가끔씩 문제가 발생하더군요. 어떤 기준인지는 잘 모르겠으나 그 때마다 삭제를 해야한다니 이건 분명히 버그인 것 같습니다. compile 하는 부분에서 .DS_Store 파일을 제외해야 하는데 그런 로직이 없는 것 같네요. 결론은 문제의 파일을 삭제하면 됩니다.