source

학습되지 않은 구문 오류:위치 0의 JSON에 예기치 않은 토큰 u가 있습니다.

myloves 2023. 4. 3. 21:53

학습되지 않은 구문 오류:위치 0의 JSON에 예기치 않은 토큰 u가 있습니다.

체크아웃 시 및 개별 제품 페이지에서만 콘솔 로그에 다음 오류가 나타납니다.

VM35594:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at run (layout.min.js:9)
    at app.min.js:1
    at main.min.js:2
    at Object.execCb (require.min.js:112)
    at Module.check (require.min.js:56)
    at Module.<anonymous> (require.min.js:72)
    at require.min.js:11
    at require.min.js:74
    at each (require.min.js:3)

한 페이지 체크아웃 확장을 사용하고 있는데 비활성화해도 오류가 계속 나타납니다.(탭에서 리뷰를 옮겼기 때문에) 상품 페이지의 리뷰와 관계가 있다고 생각했습니다만, 그 변경을 취소해도 상품 페이지의 에러가 수정되지 않았습니다.

콘솔에서 다음을 시도해 보십시오.

JSON.parse(undefined)

얻을 수 있는 것은 다음과 같습니다.

Uncaught SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6

즉, 앱이 구문 분석을 시도하고 있습니다.undefined유효한 JSON이 아닙니다.

여기에는 두 가지 일반적인 원인이 있습니다.첫 번째는 존재하지 않는 속성(또는 엄밀한 모드가 아닌 경우에는 존재하지 않는 변수)을 참조하고 있을 가능성이 있다는 것입니다.

window.foobar = '{"some":"data"}';
JSON.parse(window.foobarn)  // oops, misspelled!

두 번째 일반적인 원인은 애초에 JSON을 수신하지 못한 것입니다.이는 오류를 무시하고 요청을 전송해서는 안 될 때 클라이언트 측 스크립트가 원인일 수 있습니다.

서버측과 클라이언트측의 양쪽의 스크립트가 엄밀한 모드로 실행되고 있는 것을 확인하고, ESLint 를 사용해 그것들을 린트 합니다.이렇게 하면 오타가 없다는 확신을 얻을 수 있습니다.

@Seth Hallday @MinusFour 코멘트대로, 이 명령어는undefined변수.
추가해 보세요.if조건을 지정합니다.

if (typeof test1 !== 'undefined') { test2 = JSON.parse(test1); }

주의: 이것은 다음 항목에 대한 체크일 뿐입니다.undefined다른 모든 구문 분석 문제는 아직 처리해야 합니다

localStorage.clear()

그러면 저장된 데이터가 지워집니다.그런 다음 새로 고치면 작업이 시작됩니다.

앱에서 정의되지 않은 JSON 웹 토큰을 구문 분석하려고 합니다.로컬 스토리지의 잘못된 사용으로 인해 이러한 오작동이 발생할 수 있습니다.로컬 스토리지를 클리어합니다.

Google Chrome의 예:

  1. F12
  2. 어플
  3. 로컬 스토리지
  4. 모두 클리어

저는 페이지에 빈 컴포넌트가 있기 때문에 그런 일이 있었습니다.

<script type="text/x-magento-init">
   {
   ".page.messages": {
       "Magento_Ui/js/core/app": []        
      }
   }

이 코드를 삭제하면 문제가 해결.

이것은, 다음의 조작에 의해서 발생합니다.messages이 페이지에 표시됩니다.페이지에는 윈도 메시지이벤트 및 오브젝트를 사용하여 페이지와 통신하는 여러 프레임이 있습니다.이들 중 몇 개는 다음과 같은 서드파티 서비스가 될 수 없습니다.cookieq쿠키 관리용, 또는cartwiree-com 통합 서비스

온메시지 이벤트를 처리하여 메시지의 발신지를 확인하고 그에 따라 JSON을 해석해야 합니다.

이 JSON 오브젝트로 .u

Uncaught SyntaxError: Unexpected token u in JSON at position 0그런 다음 다음과 같은 빠른 검사를 수행할 수 있습니다.

jsObj = JSON.parse(data)
  1. 데이터 - 데이터가 정의되지 않았는지 확인합니다.

  2. data - 데이터가 유효한 JSON 문자열인지 확인합니다.

  3. 데이터 - 데이터가 원치 않는 공백으로 인해 손상되었는지 확인합니다.

    data = data.trim(); // remove the unwanted whitespace
    jsObj = JSON.parse(data);
    
  4. data - 수신된 데이터가 올바른 인코딩 형식 "utf8", "utf16le", "tft2"를 사용하고 있는지 확인합니다.

    fs.readFile(file, 'utf8', function(err, data) { ... });
    
    fs.readFile(file, 'utf16le', function(err, data) { ... }); // le - little endian
    
    fs.readFile(file, 'ucs2', function(err, data) { ... });   // kind  of 'utf16le'
    

이틀 동안 이 문제가 있었는데, 어떻게 고쳤는지 보여드릴게요.

에러가 발생했을 때의 코드는 다음과 같습니다.

request.onload = function() {
    // This is where we begin accessing the Json
    let data = JSON.parse(this.response);
    console.log(data)
}

원하는 결과를 얻기 위해 변경한 내용은 다음과 같습니다.

request.onload = function() {
    // This is where we begin accessing the Json
    let data = JSON.parse(this.responseText);
    console.log(data)
}

내가 한 은 변화를 준 이다.this.response로로 합니다.this.responseText

언급URL : https://stackoverflow.com/questions/46613243/uncaught-syntaxerror-unexpected-token-u-in-json-at-position-0