fix: improve error handling for AI service responses

- Add defensive check for response.body existence to prevent undefined property access
- Include x-ms-error-code header in error messages for better debugging
- Provide clearer error messages for different failure scenarios
- Fix 'Cannot read properties of undefined (reading 'error')' runtime error

This improves the debugging experience when AI service requests fail due to
network issues, authentication errors, or unexpected response formats.
This commit is contained in:
Naoki Ainoya
2025-07-02 09:18:50 +09:00
parent 8d1f028548
commit 37fe8eb685

View File

@@ -82,14 +82,27 @@ export async function run(): Promise<void> {
})
if (isUnexpected(response)) {
if (response.body.error) {
// Extract x-ms-error-code from headers if available
const errorCode = response.headers['x-ms-error-code']
const errorCodeMsg = errorCode ? ` (error code: ${errorCode})` : ''
// Check if response body exists and contains error details
if (response.body && response.body.error) {
throw response.body.error
}
// Handle case where response body is missing
if (!response.body) {
throw new Error(
`Failed to get response from AI service (status: ${response.status})${errorCodeMsg}. ` +
'Please check network connection and endpoint configuration.'
)
}
// Handle other error cases
throw new Error(
'An error occurred while fetching the response (' +
response.status +
'): ' +
response.body
`AI service returned error response (status: ${response.status})${errorCodeMsg}: ` +
(typeof response.body === 'string' ? response.body : JSON.stringify(response.body))
)
}