web-dev-qa-db-ja.com

キャッチされていないSyntaxError:JSONの位置0の予期しないトークン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)

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

25
Howli

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

JSON.parse(undefined)

ここにあなたが得るものがあります:

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

言い換えると、アプリは有効なJSONではないundefinedを解析しようとしています。

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

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

2番目の一般的な原因は、そもそもJSONの受信に失敗することです。これは、エラーを無視してリクエストを送信する必要のないクライアント側スクリプトが原因である可能性があります。

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

77
Seth Holladay

@Seth Holladay @MinusFourがコメントしたように、あなたはundefined変数を解析しています。
解析を行う前にif条件を追加してみてください。

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

注:これは、undefinedケースの単なるチェックです。その他の解析の問題はまだ処理する必要があります。

1
kn_pavan