DayuanJiang/next-ai-draw-io · critical · Error
${requiredVar} environment variable is required for ${provid
Error message
${requiredVar} environment variable is required for ${provider} provider. Please set it in your .env.local file. What it means
Generic single-env-var credential check: for any provider, the required var (customApiKeyEnv or PROVIDER_ENV_VARS[provider]) must be set or getAIModel throws.
Source
Thrown at lib/ai-providers.ts:666
return
}
// Anthropic accepts ANTHROPIC_AUTH_TOKEN (Bearer auth) as alternative to ANTHROPIC_API_KEY
if (provider === "anthropic" && !customApiKeyEnv) {
const hasCredential = !!(
process.env.ANTHROPIC_API_KEY || process.env.ANTHROPIC_AUTH_TOKEN
)
if (!hasCredential) {
throw new Error(
`Either ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN environment variable is required for anthropic provider. ` +
`Please set one in your .env.local file.`,
)
}
} else {
// Use custom env var name if provided, otherwise use default
const requiredVar = customApiKeyEnv || PROVIDER_ENV_VARS[provider]
if (requiredVar && !process.env[requiredVar]) {
throw new Error(
`${requiredVar} environment variable is required for ${provider} provider. ` +
`Please set it in your .env.local file.`,
)
}
}
// Azure requires either AZURE_BASE_URL or AZURE_RESOURCE_NAME in addition to API key
if (provider === "azure") {
const hasBaseUrl = !!process.env.AZURE_BASE_URL
const hasResourceName = !!process.env.AZURE_RESOURCE_NAME
if (!hasBaseUrl && !hasResourceName) {
throw new Error(
`Azure requires either AZURE_BASE_URL or AZURE_RESOURCE_NAME to be set. ` +
`Please set one in your .env.local file.`,
)
}
}
}View on GitHub (pinned to 155ef4f7ac)
Solutions
- Set the exact variable named in the error (e.g. OPENAI_API_KEY=...) in .env.local
- Restart/redeploy so the environment is re-read
- If using a custom var name, ensure customApiKeyEnv matches what you actually set
Example fix
# before AI_PROVIDER=openai # after AI_PROVIDER=openai OPENAI_API_KEY=sk-...
Defensive patterns
Strategy: validation
Validate before calling
const requiredVar = PROVIDER_ENV_VARS[provider]
if (requiredVar && !process.env[requiredVar]) throw new Error(`Missing ${requiredVar}`) Try / catch
try { getAIModel() } catch (e) { const m = (e as Error).message; if (m.includes('is required for') && m.includes('provider')) mapToEnvSetupUI(m) } Prevention
- Maintain a provider→env var map and validate at startup
- Restart after .env.local changes
- Never assume defaults for credentials
When it happens
Trigger: Provider set to e.g. openai without OPENAI_API_KEY, or a custom var name configured but unset.
Common situations: Switching providers in .env.local without adding the matching key, deployment env not injected, renamed custom var.
Understand the failure class
Background: "API key is required" / "API key not found" / "No API key was set": the missing-api-key error family across 16 libraries — this error's family across 16 libraries.
Related errors
- At least one of [${customApiKeyEnv.join(", ")}] environment
- Either ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN environment
- Azure requires either AZURE_BASE_URL or AZURE_RESOURCE_NAME
- ${varName} must be a valid integer, got: ${value}
- ${varName} must be >= ${min}, got: ${parsed}
AI-assisted analysis of DayuanJiang/next-ai-draw-io@155ef4f7ac (2026-08-27).
Data as JSON: /api/errors/d87dec78486c4e2b.
Report an issue: GitHub.