mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
fix(cli): improve error message categorization for better UX
- Connection errors (ECONNREFUSED, ETIMEDOUT, ENOTFOUND, "Network Error") show a friendly message with the server URL and network troubleshooting hints - Authentication errors (401, 403, "unauthorized", "forbidden") suggest running `hapi auth login` to help users resolve auth issues - Use case-insensitive matching (toLowerCase) to reliably catch error message variants
This commit is contained in:
+21
-1
@@ -436,7 +436,27 @@ ${chalk.bold.cyan('Claude Code Options (from `claude --help`):')}
|
||||
const { runClaude } = await import('@/claude/runClaude');
|
||||
await runClaude(options);
|
||||
} catch (error) {
|
||||
console.error(chalk.red('Error:'), error instanceof Error ? error.message : 'Unknown error')
|
||||
// Categorize errors for better user experience
|
||||
const message = error instanceof Error ? error.message : 'Unknown error';
|
||||
const messageLower = message.toLowerCase();
|
||||
const axiosCode = (error as any)?.code;
|
||||
const httpStatus = (error as any)?.response?.status;
|
||||
|
||||
if (axiosCode === 'ECONNREFUSED' || axiosCode === 'ETIMEDOUT' || axiosCode === 'ENOTFOUND' ||
|
||||
messageLower.includes('econnrefused') || messageLower.includes('etimedout') ||
|
||||
messageLower.includes('enotfound') || messageLower.includes('network error')) {
|
||||
const { configuration } = await import('@/configuration');
|
||||
console.error(chalk.yellow('Unable to connect to HAPI server'));
|
||||
console.error(chalk.gray(` Server URL: ${configuration.serverUrl}`));
|
||||
console.error(chalk.gray(' Please check your network connection or server status'));
|
||||
} else if (httpStatus === 401 || httpStatus === 403 ||
|
||||
messageLower.includes('unauthorized') || messageLower.includes('forbidden')) {
|
||||
console.error(chalk.red('Authentication error:'), message);
|
||||
console.error(chalk.gray(' Run: hapi auth login'));
|
||||
} else {
|
||||
console.error(chalk.red('Error:'), message);
|
||||
}
|
||||
|
||||
if (process.env.DEBUG) {
|
||||
console.error(error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user