Handle local development with modern JS frameworks
mainSince worker-mailer relies on Cloudflare-specific APIs (like cloudflare:sockets), it will not work in a standard Node.js local development environment. When using frameworks like Next.js, Nuxt, or SvelteKit, use conditional dynamic imports to switch between worker-mailer in production and a Node-compatible library (like nodemailer) in development.
export default defineEventHandler(async event => {
// Check if running in development environment
if (import.meta.dev) {
// Development: Use nodemailer (or any Node.js compatible email library)
const nodemailer = await import('nodemailer')
const transporter = nodemailer.default.createTransport()
return await transporter.sendMail()
} else {
// Production: Use worker-mailer in Cloudflare Workers environment
const { WorkerMailer } = await import('worker-mailer')
const mailer = await WorkerMailer.connect()
return await mailer.send()
}
})