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

wrangler dev运行正常,wrangler publish报Unexpected token p JSON解析错误

问题根因说明

Unexpected token p in JSON at position 0 错误的核心是客户端预期接收JSON格式响应,但Cloudflare线上实际返回的是非JSON内容,且内容第一个字符为p,通常为Cloudflare默认报错文本(如proxy error、page not found)的开头字符。

排查步骤
  • 首先打印完整响应内容:临时关闭客户端的自动JSON解析逻辑,直接在浏览器访问线上API地址,或执行curl -v 你的线上API地址查看完整返回内容,可直接定位是Cloudflare平台报错还是Worker代码返回异常。
  • 检查路由匹配规则:核对wrangler.toml文件中的routes配置是否与你访问的域名路径完全匹配。本地wrangler dev默认全路径匹配,线上如果路由缺少通配符(如漏写/*后缀)会导致请求未进入自定义Worker逻辑,直接返回Cloudflare默认报错页。
  • 添加入口异常兜底:给Worker的fetch入口添加全量try catch捕获,确保所有运行异常都返回JSON格式内容,避免Cloudflare注入默认文本报错:
export default {
  async fetch(request, env, ctx) {
    try {
      // 原有业务逻辑
      return new Response(JSON.stringify({code: 0, data: "success"}), {
        headers: { "Content-Type": "application/json" }
      })
    } catch (err) {
      // 异常统一返回JSON格式
      return new Response(JSON.stringify({code: 500, error: err.message}), {
        status: 500,
        headers: { "Content-Type": "application/json" }
      })
    }
  }
}
  • 核对线上绑定配置:确认线上Worker已配置和本地一致的环境变量、KV命名空间、R2存储、D1数据库等绑定项,本地.dev.vars的配置不会自动同步到线上,缺失绑定会触发运行时未定义报错。
  • 查看实时运行日志:进入Cloudflare控制台对应Worker的「日志」页面,开启实时日志后重新发起请求,可看到完整的执行栈、报错信息,直接定位代码执行异常点。
常用修复方案
  • 路由匹配错误的话,将wrangler.toml的routes值修改为你的域名/*,重新执行wrangler publish即可。
  • 所有返回响应显式设置Content-Type: application/json响应头,避免Cloudflare自动修改内容类型。
  • 补齐线上缺失的环境变量、资源绑定项后重新发布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:01