2017-10-06 12 views
4

でのみチェックアウトで、私は、コンソールログに次のエラーを取得しています個々の製品ページ:キャッチされないでSyntaxError:予期しないトークンのuをJSONでの位置0

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) 

私は1つのページのチェックアウト拡張を使用しています、しかし、私はそれを無効にするとエラーが表示されます。私はそれが製品ページのレビュー(タブからレビューを移動したとき)と関係があると思ったが、その変更を元に戻しても製品ページのエラーは修正されなかった。

+8

私はJSON.parseに 'undefined'を渡しています。 – MinusFour

+1

" checkout "は注文のチェックアウトを開始するページへのPOSTリクエストだと思いますか?そのHTTP POSTリクエストのJSONを調べましたか?私はあなたが送るものがチェックアウトページで管理できるものであるかどうかを見るためにここから始めます。 – shadowsheep

+0

デベロッパーツールコンソールを開き、[ネットワーク]タブでスクリプトの応答を確認します。あなたは適切なjsonを返すことはできません。 – AlexCode

答えて

25

コンソールでこれを試してみてください:ここで

JSON.parse(undefined) 

は、あなたが得るものです:

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

、あなたのアプリケーションは有効なJSONされていない、undefinedを解析しようとしています。

これには2つの一般的な原因があります。最初は、存在しないプロパティ(または厳密なモードでない場合は存在しない変数)を参照している可能性があります。

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

第2の共通の原因は、エラーを無視したときに、彼らはいけない要求を送信し、クライアント側のスクリプトが原因で発生することが最初の場所でJSONを受信失敗です。

サーバーサイドスクリプトとクライアントサイドスクリプトの両方がstrict modeで実行されていることと、ESLintを使用していることを確認してください。これにより、タイプミスがないというかなり良い確信が得られます。

0

これは、ページに表示されている干渉の原因で発生しています(messages)。ページには、ウィンドウメッセージイベントとオブジェクトを使用してページと通信する複数のフレームがあります。クッキーを管理するためのcookieqのようなサードパーティサービスや、e-com統合サービスのcartwireなどがあります。

メッセージが来る場所を確認するためにonmessageイベントを処理し、それに応じてJSONを解析する必要があります。統合の一つがJSONオブジェクトを渡した、他方は@Sethホラディ@MinusFourはコメントとして、あなたはundefined変数を解析しているu

0

で始まる文字列を渡したところ

私は、同様の問題に直面しました。
構文解析を実行する前に条件を追加してみてください( if)。

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

注:これはundefinedケースのためだけのチェックです。それ以外の解析問題はまだ処理する必要があります。

+1

これは、プログラムがクラッシュするのを防ぎます。しかし、ほとんどの場合、無効な入力が与えられたときにプログラムがクラッシュするのは良いことです。しかし、どこからデータが来るかによって異なります。いずれにせよ、 'undefined'だけでなく、無効なJSONがたくさんあることに注意してください。これは堅牢なチェックではありません。 https://www.nczonline.net/blog/2009/03/03/the-art-of-throwing-javascript-errors/ –

+0

真。これは「位置0のJSONの予期しないトークンu」をカバーし、他の問題はまだ処理する必要があります。私の答えが更新されます。 –

関連する問題