增加多样化的错误信息

This commit is contained in:
锦恢 2025-04-20 03:11:20 +08:00
parent 5c9f46d2f1
commit 69b907901f
2 changed files with 31 additions and 2 deletions

View File

@ -3,6 +3,7 @@
## [main] 0.0.4 ## [main] 0.0.4
- 修复选择模型后点击确认跳转回 deepseek 的 bug - 修复选择模型后点击确认跳转回 deepseek 的 bug
- 修复 mcp 项目初始化点击工具全部都是空的 bug - 修复 mcp 项目初始化点击工具全部都是空的 bug
- 修复无法重新连接的 bug
## [main] 0.0.3 ## [main] 0.0.3

View File

@ -7,10 +7,32 @@ import { panelLoadHandler, panelSaveHandler } from './panel';
import { settingLoadHandler, settingSaveHandler } from './setting'; import { settingLoadHandler, settingSaveHandler } from './setting';
import { ping } from './util'; import { ping } from './util';
import { spawnSync } from 'node:child_process';
// TODO: 支持更多的 client // TODO: 支持更多的 client
let client: MCPClient | undefined = undefined; let client: MCPClient | undefined = undefined;
function tryGetRunCommandError(command: string, args: string[] = [], cwd?: string): string | null {
try {
const result = spawnSync(command, args, {
cwd: cwd || process.cwd(),
stdio: 'pipe',
encoding: 'utf-8'
});
if (result.error) {
return result.error.message;
}
if (result.status !== 0) {
return result.stderr || `Command failed with code ${result.status}`;
}
return null;
} catch (error) {
return error instanceof Error ? error.message : String(error);
}
}
async function connectHandler(option: MCPOptions, webview: PostMessageble) { async function connectHandler(option: MCPOptions, webview: PostMessageble) {
try { try {
console.log('ready to connect', option); console.log('ready to connect', option);
@ -27,11 +49,17 @@ async function connectHandler(option: MCPOptions, webview: PostMessageble) {
// 比如 error: Failed to spawn: `server.py` // 比如 error: Failed to spawn: `server.py`
// Caused by: No such file or directory (os error 2) // Caused by: No such file or directory (os error 2)
console.log('error', error); let errorMsg = '';
if (option.command) {
errorMsg += tryGetRunCommandError(option.command, option.args, option.cwd);
}
errorMsg += (error as any).toString();
const connectResult = { const connectResult = {
code: 500, code: 500,
msg: (error as any).toString() msg: errorMsg
}; };
webview.postMessage({ command: 'connect', data: connectResult }); webview.postMessage({ command: 'connect', data: connectResult });
} }