未捕获的SyntaxError:位于0的JSON中的意外标记u

How*_*wli 27 javascript json syntax-error magento2

仅在结帐时和单个产品页面上,我在控制台日志中收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

我正在使用单页结帐扩展程序,但是当我禁用时,错误仍然显示.我认为它可能与产品页面上的评论有关(因为我将评论移出选项卡),但撤消该更改并未修复产品页面上的错误.

Set*_*day 85

在控制台中尝试这个:

JSON.parse(undefined)
Run Code Online (Sandbox Code Playgroud)

这是你将得到的:

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

换句话说,您的应用正在尝试解析undefined,这是无效的JSON.

这有两个常见原因.第一个是你可能引用了一个不存在的属性(如果不是严格模式,甚至是一个不存在的变量).

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

第二个常见原因是无法首先接收JSON,这可能是由忽略错误的客户端脚本引起的,并且在不应该发送请求时发送请求.

确保服务器端和客户端脚本都以严格模式运行,并使用ESLint对其进行lint.这会让你非常自信没有拼写错误.


kn_*_*van 8

正如@Seth Holladay @MinusFour 评论的那样,您正在解析一个undefined变量。在进行解析之前
尝试添加if条件。

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

注意:这只是一个undefined案例检查。任何其他解析问题仍然需要处理。


小智 5

localStorage.clear()
Run Code Online (Sandbox Code Playgroud)

这将清除存储的数据。然后刷新,事情应该开始工作。