# 문제
Visual Studio로 Node.JS를 공부하다보면
JSON.parse가 안 읽히고 밑에와 같은 오류가 발생하는 경우가 있다.
---------------------------- 오류 내용 ----------------------------
SyntaxError: Unexpected token in JSON at position 0
at JSON.parse (<anonymous>)
at C:\Users\\source\repos\NodejsWebApp1\NodejsWebApp1\router\main.js:21:30
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
--------------------------------------------------------------------
# 원인
저런 오류가 뜨는 원인은 콘솔 창에서 나오는
undefined:1
□{
^
이 부분이 때문이다.
이 부분이 JSON.parse를 하는 과정에서 오류를 발생시킨다.
좀더 자세히 봐보자
JSON 파일에서 데이터를 가져올 때 □인 빈문자가 같이 딸려온다...
그럼 이 문제를 어떻게 해결해야 할까?
# 해결법
해결방법은 간단하다.
그냥 □인 빈문자를 trim으로 지워주면 된다.
ex) data.toString().trim();
1 2 3 4 5 6 | nonfs.readFile(__dirname + "/../data/user.json", 'utf8', function (err, data) { var TempData = data.toString().trim(); console.log(TempData); var users = JSON.parse(TempData); res.json(users[req.params.username]); }); | cs |
위의 방식으로 말이다.
이게 근본적인 해결책인지는 잘 모르겠다.
하지만 이것가지고 삽질을 조금 했으니 그 이력은 남긴다.
만약 이 글을 보고있는 사람이 다른 좋은 방법이 있으시다면
꼭 알려주시면 감사합니다.!!!!!
----------------------------------------------
<추가 : 2018-05-30>
근본적인 해결방법을 알아내서 수정한다.
해당 문자 □는 빈문자가 아닌 utf-8 bom 문자로 인코딩 방식을 알려주는 문자이다.
그런데 이 문자가 자동으로 들어가졌기 때문에,
JSON형식을 파싱하는 과정에서 오류가 발생했고
위와 같은 오류를 출력하는 것이다.
해결 방법은
"Visual Studio - 도구 - 옵션 - 텍스트 편집기 - 일반" 에서
"서명 없는 UTF-8 인코딩 자동 검색"을 해제하는 것이다.
언제나 생각하는거지만,
해결방법을 보면 간단한데 이걸 해결하기위한 삽질은 간단하지가 않는것 같다.
다른 사람들도 이런 오류로 삽질을 하지 않길 바라는 마음에 써본다.
# 마무리
위 포스트는 제가 직접 제작한 것 입니다.
그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.
만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.
빠른 처리 하도록 하겠습니다.
티스토리 앱으로는 댓글 이용이 불가능 하므로 웹 브라우저로 봐 주세요
(URL : http://junprogramer.tistory.com/)
읽어주셔서 감사합니다.
'잡다한 기술' 카테고리의 다른 글
Yarn 자동 실행 또는 원격 실행 파일 만드는 방법 (0) | 2018.06.07 |
---|---|
"구글 신은 모든 것을 알고 있다"를 읽고 (0) | 2018.05.31 |
우아한형제들 1차 코딩 테스트 합격 (0) | 2018.05.24 |
[알고리즘]피보나치 수열의 짝수 합 구하기 (0) | 2018.05.22 |
[알고리즘]배열의 이어지는 인터벌 최대합 구하기 (0) | 2018.05.21 |