[Obsidian] 옵시디언 Canvas 열리지 않을 때 해결법
어느날 갑자기 잘 쓰고있던 obsidian의 캔버스 파일이 열리지 않았다. 이에 대한 해결책을 공유한다.
서문
오랫동안 기록해온 옵시디언의 캔버스가 갑자기 열리지 않는다면 많이 억울할 것이다. 나의 경우에도 저렇게 나오며 옵시디언에서 캔버스가 열리지 않았다. 아래와 같은 해결책을 통해 canvas깨짐 현상을 해결할 수 있다.
.canvas 파일에 대한 이해
- .Canvas 확장나는 기본적으로 JSON 파일 형식을 변형한 것이다. 따라서 JSON 파일 형식 오류를 해결하면 캔버스 깨짐 현상도 해결할 수 있다.
- JSON 형식은 다음과 같이 구성된다.
{
"key1":"value1",
"key2":"value2",
"key3":"value3"
},
{
"key1":"value4",
"key2":"value5",
"key3":"value6"
},
{
"key1":"value7",
"key2":"value8",
"key3":"value9"
},
- 각 객체는 중괄호로 구분되고 그 안에서 "속성": "속성값" 여러개가 쉼표를 통해 구성된다.
단 쉼표는 구분자의 역할만 하므로 마지막 "속성": "속성값" 뒤에는 쉼표를 붙이지 않는다.
해결책
- canvas 파일이 깨져서 보이지 않는 것도 저 json 문법을 지키지 않아서다. 차근차근 해결해보자.
- 1. 컴퓨터지식.canvas 파일이 열리지 않는다고 하자. 그러면 옵시디언 말고 파일탐색기를 통해 해당 파일의 위치까지 접근한다.
2. 해당 파일의 확장자명을 .json으로 바꾼다.
3. vscodeStudio 다 vscode 처럼 코딩 문법 에러를 잡아줄 수 있는 텍스트 에디터를 통해 열어준다. 메모장 등으로도 열수는 있겠지만 에러를 찾는데 오래걸려 텍스트 에디터를 통해 여는 것을 권장한다.
4. 그러면 다음과 같이 붉은색 '후행 쉼표' 라고 에러가 뜨는 줄이 있을거다. Json 문법에서는 속성값 뒤에 쉼표를 붙이면 안되는데 붙어있어서 생긴 오류다.
5. 후행쉼표 에러 문제를 마지막 항목의 쉼표들을 뜨는 에러가 없을때 까지 지워준다. 에러가 해결되면 더이상 붉게 에러가 뜨지 않는다.
6. 저장하고 다시 확장자명을 .canvas로 바꿔준다.
7. 다시 옵시디언으로 들어가 캔버스를 열면 잘 나오는 것을 해결할 수 있다.
마지막에 쉼표부분들만 제거해주는 python 프로그램을 만들었다. 일일히 손으로 바꾸는게 귀찮아서 이다. 깃허브 링크를 올릴테니 다운받아서 사용하면 될 것이다.
결론
처음에 canvas 파일이 안되서 많이 당황스러웠다. 기록해놓은게 많았는데 다 날라갔다고 생각했기 때문이다. 그런데 canvas 파일이 고유한 단독 파일이 아니라 json 을 기반으로 한다는 것을 알게되었고, json 파일을 변환하자는 실마리를 잡고 스스로 해결하게 되었다. 여기서는 후행쉼표 문제만 다루었지만 다른 이유로 열리지 않을때 json 파일의 관점으로 접근한다면 그 문제들도 해결 할 수 있을것이다.
하지만 저렇게 해서 복구해도 canvas 파일을 수정하면 다시 에러가 뜨는 경우가 있다. 이때 이 게시글을 참고하면 좋을 것이다.