fix: get error messages from nested objects (this fixes google sheets error msg)

This commit is contained in:
Emir Karabeg
2025-03-10 23:15:53 -07:00
parent b446a3ce51
commit ff94684774
4 changed files with 39 additions and 7 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ export async function POST(request: Request) {
} catch (error: any) {
return NextResponse.json({
success: false,
error: error.message || 'Unknown error',
error: error instanceof Error ? error.message : String(error),
})
}
}
@@ -183,7 +183,11 @@ export function WebhookConfig({ blockId, subBlockId, isConnecting }: WebhookConf
if (!response.ok) {
const errorData = await response.json()
throw new Error(errorData.error || 'Failed to save webhook')
throw new Error(
typeof errorData.error === 'object'
? errorData.error.message || JSON.stringify(errorData.error)
: errorData.error || 'Failed to save webhook'
)
}
const data = await response.json()
+9 -3
View File
@@ -402,11 +402,17 @@ async function handleInternalRequest(
let errorData
try {
errorData = await response.json()
} catch (e) {
errorData = { error: response.statusText }
} catch {
throw new Error(response.statusText || `Request failed with status ${response.status}`)
}
throw new Error(errorData.error || `Request failed with status ${response.status}`)
// Extract error message from nested error objects (common in API responses)
const errorMessage =
typeof errorData.error === 'object'
? errorData.error.message || JSON.stringify(errorData.error)
: errorData.error || `Request failed with status ${response.status}`
throw new Error(errorMessage)
}
// Use the tool's response transformer if available
+24 -2
View File
@@ -49,7 +49,11 @@ export const readTool: ToolConfig<GoogleSheetsToolParams, GoogleSheetsReadRespon
},
transformResponse: async (response: Response) => {
if (!response.ok) {
const errorText = await response.text()
const errorJson = await response.json().catch(() => ({ error: response.statusText }))
const errorText =
errorJson.error && typeof errorJson.error === 'object'
? errorJson.error.message || JSON.stringify(errorJson.error)
: errorJson.error || response.statusText
throw new Error(`Failed to read Google Sheets data: ${errorText}`)
}
@@ -91,12 +95,30 @@ export const readTool: ToolConfig<GoogleSheetsToolParams, GoogleSheetsReadRespon
// If it's an object with an error or message property
if (typeof error === 'object' && error !== null) {
// Handle Google API error response format
if (error.error) {
return typeof error.error === 'string' ? error.error : JSON.stringify(error.error)
if (typeof error.error === 'string') {
return error.error
}
// Google API often returns error objects with error.error.message
if (typeof error.error === 'object' && error.error.message) {
return error.error.message
}
// If error.error is an object but doesn't have a message property
return JSON.stringify(error.error)
}
if (error.message) {
return error.message
}
// If we have a complex object, stringify it for debugging
try {
return `Google Sheets API error: ${JSON.stringify(error)}`
} catch (e) {
// In case the error object can't be stringified (e.g., circular references)
return 'Google Sheets API error: Unable to parse error details'
}
}
// Default fallback message