UncoughtaxError: onverwachte token u in JSON op positie 0

Alleen bij het afrekenen en op individuele productpagina’s krijg ik de volgende fout in het console-log:

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)

Ik gebruik een uitcheckverlenging van één pagina, maar wanneer ik uit gebruik dat de fout nog steeds laat zien. Ik dacht dat het misschien iets te maken had met de beoordelingen op de productpagina (omdat ik de beoordelingen van de tabbladen heb verplaatst), maar maakte het ongedaan dat die verandering niet de fout op de productpagina’s heeft opgelost.


Antwoord 1, Autoriteit 100%

Probeer dit in de console:

JSON.parse(undefined)

Hier is wat u krijgt:

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

Met andere woorden, uw app probeert te parseren undefined, die niet geldig is JSON.

Er zijn hiervoor twee veel voorkomende oorzaken. De eerste is dat u mogelijk een niet-bestaande eigenschap (of zelfs een niet-bestaande variabele verwijst, zo niet in strikte modus).

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

De tweede veelvoorkomende oorzaak is het niet ontvangen van de JSON in de eerste plaats, wat kan worden veroorzaakt door client-side scripts die fouten negeren en een verzoek verzenden wanneer dat niet zou moeten.

Zorg ervoor dat zowel uw server-side als client-side scripts worden uitgevoerd in strikte modusen pluis ze met ESLint. Dit geeft je vrij goed vertrouwen dat er geen typefouten zijn.


Antwoord 2, autoriteit 4%

Zoals @Seth Holladay @MinusFour opmerkte, ontleden je een undefinedvariabele.
Probeer een if-voorwaarde toe te voegen voordat u de analyse uitvoert.

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

Opmerking: dit is slechts een controle voor undefinedcase. Alle andere parseerproblemen moeten nog worden opgelost.


Antwoord 3, autoriteit 3%

localStorage.clear()

Hiermee worden de opgeslagen gegevens gewist. Vernieuw dan en alles zou moeten beginnen te werken.


Antwoord 4

Voor mij gebeurde dat omdat ik een lege component op mijn pagina had –

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

Het verwijderen van dit stukje code loste het probleem op.


Antwoord 5

Uw app probeert het ongedefinieerde JSON-webtoken te ontleden. Een dergelijke storing kan optreden als gevolg van verkeerd gebruik van de lokale opslag. Probeer je lokale opslag te wissen.

Voorbeeld voor Google Chrome:

  1. F12
  2. Toepassing
  3. Lokale opslag
  4. Alles wissen

Antwoord 6

Dit is te wijten aan de interfererende messagesdie op de pagina komen. Er zijn meerdere frames op de pagina die communiceren met de pagina met behulp van Window Message Event en Object. Enkele van hen kunnen externe diensten zijn zoals cookieqvoor het beheren van cookies, of kunnen cartwireeen E-COM-integratieservice.

U moet de onmessage-gebeurtenis omgaan om te controleren vanaf waar de berichten komen, en dan de JSON dienovereenkomstig parseren.

Ik heb geconfronteerd met een soortgelijk probleem, waarbij een van de integratie een JSON-object passeerde en andere passeerde een tekenreeks met u


Antwoord 7

Ik had dit probleem voor 2 dagen, laat me je laten zien hoe ik het heb gerepareerd.

Dit was hoe de code eruitzag toen ik de foutmelding had:

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

Dit is wat ik veranderde om het resultaat te krijgen dat ik wilde:

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

Dus alles wat ik echt heb gedaan was veranderd
this.responsenaar this.responseText.

Other episodes