mirror of
https://github.com/simstudioai/sim.git
synced 2026-09-24 15:45:35 +08:00
fix: get error messages from nested objects (this fixes google sheets error msg)
This commit is contained in:
@@ -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),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
+5
-1
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user