如何调试Cloudflare Pages上出现500错误的SvelteKit应用?
问题:SvelteKit部署Cloudflare Pages后出现500错误,JSON解析失败
背景信息
- 原环境:本地及服务器通过PM2+Nginx反向代理,用
npm run dev运行SvelteKit应用,运行正常但非生产模式,计划迁移到Cloudflare Pages无服务器架构 - 矛盾点:本地执行
npm run build+npm run preview完全正常,Cloudflare Pages构建成功,但访问时直接返回500错误 - 错误日志:
"SyntaxError: Unexpected token 'R', "ReferenceE"... is not valid JSON\n at JSON.parse (<anonymous>)\n at Proxy.<anonymous> (bundledWorker-0.9684693903267865.mjs:18147:25)\n at async load (bundledWorker-0.9684693903267865.mjs:778:27)\n at async load_data (bundledWorker-0.9684693903267865.mjs:18065:18)\n at async bundledWorker-0.9684693903267865.mjs:19314:18"
- 应用依赖Strapi GraphQL接口获取数据,怀疑此处存在问题,但无法直接访问Cloudflare上的打包文件进行调试
已尝试的排查步骤
- 本地切换到Node 16构建(与Cloudflare Pages运行环境版本一致)
- 硬编码环境变量(验证过变量值有效)
- 本地构建后预览,应用功能完全正常
调试过程与解决方案
- 本地模拟Cloudflare环境调试:执行
wrangler dev .svelte-kit/cloudflare/_worker.js,复现了线上的500错误 - 定位问题:
graphql-request包默认使用XMLHttpRequest发起请求,但Cloudflare Pages运行环境不支持XMLHttpRequest API - 修复方法:初始化GraphQLClient时显式传入
fetch参数,示例代码如下:
import { GraphQLClient } from 'graphql-request'; const strapiGraphQLEndpoint = '你的Strapi GraphQL接口地址'; const client = new GraphQLClient(strapiGraphQLEndpoint, { fetch: fetch // 强制使用Cloudflare支持的fetch API });
内容的提问来源于stack exchange,提问作者Kirk
相关产品推荐
相关产品推荐

