Fix error handling and improve error messages

- Fix inconsistent error handling in sendEmailTask by re-throwing original Error instances
- Preserve stack traces and error context instead of creating new Error wrappers
- Improve generic error messages in emailProcessor utilities with specific details
- Add actionable guidance for common configuration issues
- Help developers understand what went wrong and how to fix it
- Bump version to 0.4.1
This commit is contained in:
2025-09-14 18:00:23 +02:00
parent a12d4c1bee
commit ccd8ef35c3
3 changed files with 30 additions and 6 deletions

View File

@@ -242,9 +242,11 @@ export const sendEmailJob = {
}
} catch (error) {
// Re-throw Error instances to preserve stack trace and error context
if (error instanceof Error) {
throw new Error(`Failed to process email: ${error.message}`, { cause: error })
throw error
} else {
// Only wrap non-Error values
throw new Error(`Failed to process email: ${String(error)}`)
}
}

View File

@@ -10,8 +10,19 @@ export async function processEmailById(payload: Payload, emailId: string): Promi
// Get mailing context from payload
const mailingContext = (payload as any).mailing
if (!mailingContext || !mailingContext.service) {
throw new Error('Mailing plugin not properly initialized')
if (!mailingContext) {
throw new Error(
'Mailing plugin not found on payload instance. ' +
'Ensure the mailingPlugin is properly configured in your Payload config plugins array.'
)
}
if (!mailingContext.service) {
throw new Error(
'Mailing service not available. ' +
'The plugin may not have completed initialization. ' +
'Check that email configuration is properly set up in your Payload config.'
)
}
// Process the specific email
@@ -27,8 +38,19 @@ export async function processAllEmails(payload: Payload): Promise<void> {
// Get mailing context from payload
const mailingContext = (payload as any).mailing
if (!mailingContext || !mailingContext.service) {
throw new Error('Mailing plugin not properly initialized')
if (!mailingContext) {
throw new Error(
'Mailing plugin not found on payload instance. ' +
'Ensure the mailingPlugin is properly configured in your Payload config plugins array.'
)
}
if (!mailingContext.service) {
throw new Error(
'Mailing service not available. ' +
'The plugin may not have completed initialization. ' +
'Check that email configuration is properly set up in your Payload config.'
)
}
// Process pending emails first