본문 바로가기

잡다한 기술

[Node.JS]비쥬얼 스튜디오(Visual studio)에서 Node.JS를 사용할 때 JSON.parse가 안되는 현상




# 문제


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/)


읽어주셔서 감사합니다.