You need to enable JavaScript to run this app. 仅Chrome运行MERN应用报Uncaught SyntaxError JSON解析错误求助
优惠活动
大模型
产品
解决方案
定价
更多

仅Chrome运行MERN应用报Uncaught SyntaxError JSON解析错误求助

问题根因定位

你遇到的Uncaught SyntaxError: Unexpected token o in JSON at position 1错误,本质是执行JSON.parse()时传入的参数不是合法的JSON字符串,而是已经被转为Object类型的值。JS默认会把Object转为[object Object]字符串,解析时第1位(下标从0开始)的字符是o,因此触发该报错。


排查步骤

  • 第一步:校验localStorage读写逻辑
    不要直接对localStorage取出的值执行JSON.parse(),也不要直接存对象到localStorage,统一封装安全的读写工具函数,示例如下:

    // 安全读取localStorage
    const safeLocalStorageGet = (key, fallback = null) => {
      try {
        const rawVal = window.localStorage.getItem(key)
        return rawVal ? JSON.parse(rawVal) : fallback
      } catch (err) {
        // 解析失败直接返回兜底值,避免阻断代码执行
        console.warn(`localStorage读取${key}失败,返回兜底值`, err)
        return fallback
      }
    }
    
    // 安全写入localStorage
    const safeLocalStorageSet = (key, value) => {
      try {
        window.localStorage.setItem(key, JSON.stringify(value))
      } catch (err) {
        console.error(`localStorage写入${key}失败`, err)
      }
    }
    

    同时排查近期修改的依赖是否有劫持localStorage原生方法的逻辑,部分埋点、数据同步类第三方包会重写localStorage.getItem/setItem,不同浏览器的兼容实现不一致会触发该问题。

  • 第二步:清理Chrome本地脏数据
    打开Chrome控制台 → 顶部Application标签 → 左侧Storage栏找到Local Storage下的站点域名 → 右键清空所有存储值,之后按Ctrl+Shift+R(Windows)/Command+Shift+R(Mac)硬刷新页面重试。开发过程中可能遗留了未序列化的脏数据在Chrome本地存储中,Safari无该脏数据因此运行正常。

  • 第三步:排查Chrome插件与配置影响
    禁用所有Chrome第三方插件(尤其是广告拦截、隐私防护类插件),关闭匿名模式后重试。部分插件会拦截篡改站点的本地存储读写请求,返回undefined或非法值导致解析失败。


内容的提问来源于stack exchange,提问作者pop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 14:36:04