You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展出现Uncaught SyntaxError错误,求解决方案

问题分析与解决方案

错误原因

报错Uncaught SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON的核心原因有两点:

  1. 代码中存在将HTML响应当作JSON解析的操作(比如用JSON.parse()处理了返回网页内容的请求结果)。
  2. 配置冲突:你在manifest.json里把popup.js同时设置为content script(注入到YouTube页面)和popup页面的脚本,两个运行环境逻辑不兼容。popup.js是为popup页面编写的DOM操作或API调用代码,放到content script环境中执行时,可能误请求了HTML页面而非JSON接口,或者代码逻辑本身不适应content script环境,最终触发解析错误。

解决方案

1. 拆分脚本,分离运行环境

把popup页面的脚本和content script脚本彻底分开:

  • 若需要向YouTube页面注入脚本,新建content.js文件,专门编写content script逻辑。
  • 修改manifest.json的content_scripts配置,指定正确的脚本文件:
{
"manifest_version": 3,
"name": "Volume",
"description": "this show the v",
"version": "1.0",
"host_permissions": [
"https://www.googleapis.com/*"
],
"content_scripts": [
{
"matches": ["https://www.youtube.com/*"],
"js": ["content.js"] // 替换为专用的content脚本
}
],
"action": {
"default_popup": "popup.html"
}
}
  • 若你的扩展不需要向YouTube页面注入任何脚本,直接删除整个content_scripts配置块即可,这是最直接解决冲突的方式。

2. 检查并修正网络请求逻辑

打开popup.js,排查所有涉及数据解析的代码:

  • 确认fetch或Chrome API调用的目标是返回JSON的接口(比如https://www.googleapis.com/下的API端点),而非普通HTML页面。
  • 若请求后直接用JSON.parse()处理响应,先打印响应内容确认格式:
fetch('你的API地址')
  .then(res => {
    console.log('响应内容:', res); // 先确认返回的是JSON而非HTML
    return res.json();
  })
  .then(data => {
    // 处理数据
  })
  .catch(err => console.error('请求错误:', err));

3. 确保脚本加载环境正确

popup.js仅通过popup.html中的<script src="popup.js"></script>加载,不要在其他环境(比如content script)中重复加载该脚本,避免逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:40:41