仅在结帐时和单个产品页面上,我在控制台日志中收到以下错误:
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)
我正在使用单页结帐扩展程序,但是当我禁用时,错误仍会显示。我认为它可能与产品页面上的评论有关(因为我将评论移出选项卡),但撤消该更改并未修复产品页面上的错误。
答案 0 :(得分:64)
在控制台中尝试:
JSON.parse(undefined)
您将获得以下内容:
Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at <anonymous>:1:6
换句话说,您的应用正在尝试解析undefined
,这是无效的JSON。
这有两个常见原因。第一个是你可能引用一个不存在的属性(如果不是严格模式,甚至是一个不存在的变量)。
window.foobar = '{"some":"data"}';
JSON.parse(window.foobarn) // oops, misspelled!
第二个常见原因是首先没有收到JSON,这可能是由忽略错误的客户端脚本引起的,并且在他们不应该发送请求时发出。
确保服务器端和客户端脚本都在strict mode中运行,并使用ESLint对其进行lint。这会让你非常自信没有拼写错误。
答案 1 :(得分:2)
localStorage.clear()
这将清除存储的数据。然后刷新,一切应该开始工作。
答案 2 :(得分:1)
正如@Seth Holladay @MinusFour评论的那样,您正在解析do {
recordingSession = AVAudioSession.sharedInstance()
try recordingSession.setCategory(AVAudioSessionCategoryRecord)
}catch {}
变量。
尝试在进行解析之前添加undefined
条件。
if
注意:这只是对if (typeof test1 !== 'undefined') {
test2 = JSON.parse(test1);
}
案例的检查。还需要处理任何其他解析问题。
答案 3 :(得分:0)
对我来说,发生这种情况是因为我的页面中有一个空白组件-
<script type="text/x-magento-init">
{
".page.messages": {
"Magento_Ui/js/core/app": []
}
}
删除这段代码即可解决问题。
答案 4 :(得分:0)
这个问题我持续了2天,让我告诉你如何解决。
这是我收到错误时代码的外观:
request.onload = function() {
// This is where we begin accessing the Json
let data = JSON.parse(this.response);
console.log(data)
}
这是我为了获得想要的结果而进行的更改:
request.onload = function() {
// This is where we begin accessing the Json
let data = JSON.parse(this.responseText);
console.log(data)
}
所以我真正要做的就是改变
this.response
至this.responseText
。
答案 5 :(得分:0)
您的应用正在尝试解析未定义的JSON网络令牌。可能由于错误使用本地存储设备而导致此类故障。尝试清除您的本地存储。
Chrome浏览器示例:
答案 6 :(得分:-1)
这是由于页面上出现了干扰messages
。页面上有多个框架,使用窗口消息事件和对象与页面进行通信。其中很少可以是cookieq
等第三方服务来管理cookie,或者可能是cartwire
e-com集成服务。
您需要处理onmessage事件以检查消息的来源,然后相应地解析JSON。
我遇到了类似的问题,其中一个集成传递了一个JSON对象而另一个正在传递一个以u
开头的字符串