1. ホーム
  2. javascript

[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。

2022-01-30 12:18:38

質問

チェックアウト時と個別の商品ページでのみ、コンソールログに以下のようなエラーが表示されるのですが。

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ページチェックアウトの拡張機能を使用していますが、それを無効にすると、エラーはまだ表示されます。商品ページのレビューが関係しているのかと思いましたが(レビューをタブの外に出したので)、その変更を元に戻しても、商品ページのエラーは直りませんでした。

解決するには?

コンソールで試してみてください。

JSON.parse(undefined)

以下は、その内容です。

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

言い換えると、あなたのアプリは、次のようにパースしようとしています。 undefinedこれは有効なJSONではありません。

これには2つの共通した原因があります。ひとつは、存在しないプロパティ(あるいはストリクトモードでない場合は存在しない変数)を参照している可能性があることです。

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

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

サーバーサイドとクライアントサイドのスクリプトが、両方とも ストリクトモード を使用し、lintを行います。 ESLint . これで誤字脱字がないことはかなり確信が持てるでしょう。