저장을 습관화

230608 TIL - 로컬 스토리지와 JSON과 unexpected token 본문

공부/TIL

230608 TIL - 로컬 스토리지와 JSON과 unexpected token

ctrs 2023. 6. 8. 20:06

오늘 발생했던 에러

unexpected token 'c' in JSON....

에러가 발생한 위치조차 엉뚱한 곳을 가르킴

 

- 에러 원인 

로컬 스토리지에 저장한 댓글 수정 기능 작성 중

const obj = {
            id: localStorage.getItem('id'),
            cmt: $txt.value,
            movieId: idParams,
            cmtKey: priKey
};

localStorage.setItem(priKey, JSON.stringify(obj));
// JSON.stringify(): 객체 obj 를 string 타입으로 저장함


// 로컬 스토리지에서 확인했을때는 다음과 같다.

// key: 3
// value: {"id":"testID","cmt":"test3","movieId":238,"cmtKey":3}

// 객체의 형태이지만 string 타입이다.

// 그리고 데이터를 불러올 때는
// (함수와 반복문 생략)
const id = JSON.parse(localStorage.getItem(item))['id'];
const cmt = JSON.parse(localStorage.getItem(item))['cmt'];
const movieId = JSON.parse(localStorage.getItem(item))['movieId'];
const cmtKey = JSON.parse(localStorage.getItem(item))['cmtKey'];

//JSON.parse: string 타입으로 로컬 스토리지에 저장했던 데이터를 객체 타입으로 변환하여 사용함

이러한 내용이었고,

 

수정 테스트를 위해 아래와 같이 '수정하고자 하는 텍스트' string 데이터를 바로 덮어씌워줬더니

기존에 저장된 {"id":"testID","cmt":"test3","movieId":238,"cmtKey":3} 가

'수정하고자 하는 텍스트.'로 바뀌며 unexpected 에러 발생

const crtTxt = '수정하고자 하는 텍스트.'

localStorage.setItem((key), crtTxt)

// 에러 발생!

 

const id = JSON.parse(localStorage.getItem(item))['id'];
const cmt = JSON.parse(localStorage.getItem(item))['cmt'];
const movieId = JSON.parse(localStorage.getItem(item))['movieId'];
const cmtKey = JSON.parse(localStorage.getItem(item))['cmtKey'];

위 부분에서 string {"id":"testID","cmt":"test3","movieId":238,"cmtKey":3}을

다시 객체로 바꿔 값들을 가져와야하는데 그러지 못하니 발생한 것으로 확인함.

 

 

- 에러 증상

웹 페이지 내 존재하던 Javascript 함수가 전부 다 작동을 멈춤

로컬 스토리지에 정상적으로 등록되어 있던 다른 데이터도 불러오지 못함

빈 화면만 나옴

함수가 작동하지 않으니 localStorage.clear()도 먹히지 않음

 

- 해결 방법

개발자도구 - application 로컬 스토리지에 저장된 데이터 중

value: '수정하고자 하는 텍스트.' 를 직접 삭제(우클릭-delete)해주니 해결됨

 

'공부 > TIL' 카테고리의 다른 글

230612 TIL  (0) 2023.06.12
230608 TIL - parentNode  (0) 2023.06.08
230607 TIL  (0) 2023.06.08
230606 TIL - 모듈 Module (2)  (0) 2023.06.06
230605 TIL - 모듈 Module  (0) 2023.06.05