Error invoking remote method 'knowledge-base:search': Error: Failed to create RA...
错误信息
Error: Error invoking remote method 'knowledge-base:search': Error: Failed to create RAGApplication: TypeError: fetch failed
AI 解决方案
错误翻译
原文:Error: Failed to create RAGApplication: TypeError: fetch failed
译文:错误:创建 RAGApplication 失败:类型错误:fetch 请求失败
原因分析
这个错误发生在基于 Electron 的 RAG 应用中,当主进程试图调用
knowledge-base:search 远程方法时,底层服务初始化失败。核心问题是 fetch 调用失败,通常表明:- 网络连接问题 - 应用无法连接到目标 API 服务或外部资源
- 跨域限制 - 在渲染进程或主进程中发起的 fetch 请求被 CORS 策略阻止
- SSL/TLS 证书问题 - 如果目标服务使用 HTTPS,证书可能无效或不受信任
- 目标服务未运行 - RAG 应用依赖的后端服务未启动或端口不正确
错误链:渲染进程远程调用 → 主进程处理 → 创建 RAGApplication 实例 → fetch 请求失败
解决方案
检查方案 1:验证服务连接
// 在主进程中添加调试代码,检查 fetch 目标
async function testConnection() {
try {
const response = await fetch('http://localhost:3000/health'); // 替换为您的 API 端点
console.log('服务状态:', response.status, response.statusText);
const data = await response.text();
console.log('响应数据:', data);
} catch (error) {
console.error('连接失败详情:', error.message);
}
}
// 在创建 RAGApplication 之前调用 testConnection()
方案 2:Electron 主进程配置
// main.js 或主进程文件中
const { app, BrowserWindow } = require('electron');
// 创建窗口时启用 Node 集成和关闭安全限制
const createWindow = () => {
const mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false, // 仅开发环境,生产环境需配置 contextBridge
webSecurity: false // 仅用于开发调试
}
});
};
方案 3:修复 fetch 调用
// RAGApplication 初始化代码中,添加错误处理和超时
async function createRAGApplication() {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10秒超时
try {
const response = await fetch('YOUR_API_ENDPOINT', {
signal: controller.signal,
headers: {
'Content-Type': 'application/json',
'User-Agent': 'Your-App-Name'
}
});
clearTimeout(timeoutId);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
} catch (error) {
clearTimeout(timeoutId);
console.error('Fetch 失败详情:', error);
// 提供备用方案或更详细的错误信息
throw new Error(`无法初始化 RAG 服务: ${error.message}`);
}
}
️ 预防措施
最佳实践
️ 推荐工具
curl 或 Postman 预先测试 API 端点连通性electron-log 库,记录详细的请求和错误日志⚠️ 注意:在生产环境中,请勿禁用 webSecurity,应正确配置 CORS 或使用代理服务器解决跨域问题。