Unexpected token '<', "<!DOCTYPE "... is not valid JSON at JSON.parse (<anonymou...
🚨 错误信息
🤖 AI解决方案
代码报错分析报告
错误翻译
原文:Unexpected token '<', "译文:意外的标记'<',"原因分析
根本原因:API请求返回了HTML页面而非JSON数据,导致JSON解析失败
错误位置:
CustomGoogleGeminiClient.js 第293行的 JSON.parse() 调用解决方案
``javascriptAPI接口异常: ${textResponse.split('\n')[0]}
// 在 CustomGoogleGeminiClient.js 中添加错误处理
async sendMessage(message) {
try {
const response = await fetch(apiUrl, options);
// 检查响应内容类型
const contentType = response.headers.get('content-type');
if (!contentType || !contentType.includes('application/json')) {
const textResponse = await response.text();
console.error('API返回非JSON数据:', textResponse.substring(0, 200));
throw new Error('API接口返回异常,请检查API配置');
}
const data = await response.json();
return data;
} catch (error) {
if (error.message.includes('Unexpected token')) {
// 重新获取响应文本分析问题
const textResponse = await response.text();
console.error('API响应内容:', textResponse);
throw new Error();
}
throw error;
}
}
️ 预防措施
1. API配置检查
2. 防御性编程建议
javascript
// 添加响应验证
const validateApiResponse = (response) => {
if (!response.ok) {
throw new Error(HTTP ${response.status}: ${response.statusText}
);
}
const contentType = response.headers.get('content-type');
if (!contentType?.includes('application/json')) {
return response.text().then(text => {
throw new Error(期望JSON但收到: ${contentType});
});
}
return response.json();
};
``推荐工具:使用Postman或curl验证API接口是否正常返回JSON数据