{"record":{"id":"10f5f7a62ce29a89","repo":"Mintplex-Labs/anything-llm","slug":"no-valid-image-generation-provider-was-set-got","errorCode":null,"errorMessage":"No valid image generation provider was set. Got: ${provider}","messagePattern":"No valid image generation provider was set\\. Got: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/utils/helpers/index.js","lineNumber":349,"sourceCode":"function getImageGeneratorProvider() {\n  const provider = process.env.IMAGE_GEN_PROVIDER;\n  switch (provider) {\n    case \"openai\":\n      const { OpenAiImageGenerator } = require(\"../ImageGenerators/openAi\");\n      return new OpenAiImageGenerator();\n    case \"ollama\":\n      const { OllamaImageGenerator } = require(\"../ImageGenerators/ollama\");\n      return new OllamaImageGenerator();\n    case \"lemonade\":\n      const { LemonadeImageGenerator } = require(\"../ImageGenerators/lemonade\");\n      return new LemonadeImageGenerator();\n    case \"openrouter\":\n      const {\n        OpenRouterImageGenerator,\n      } = require(\"../ImageGenerators/openRouter\");\n      return new OpenRouterImageGenerator();\n    default:\n      throw new Error(\n        `No valid image generation provider was set. Got: ${provider}`\n      );\n  }\n}\n\n/**\n * Returns the LLMProviderClass - this is a helper method to access static methods on a class\n * @param {{provider: string | null} | null} params - Initialize params for LLMs provider\n * @returns {BaseLLMProviderClass}\n */\nfunction getLLMProviderClass({ provider = null } = {}) {\n  switch (provider) {\n    case \"openai\":\n      const { OpenAiLLM } = require(\"../AiProviders/openAi\");\n      return OpenAiLLM;\n    case \"azure\":\n      const { AzureOpenAiLLM } = require(\"../AiProviders/azureOpenAi\");\n      return AzureOpenAiLLM;","sourceCodeStart":331,"sourceCodeEnd":367,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/server/utils/helpers/index.js#L331-L367","documentation":"Thrown by getImageGeneratorProvider() in its switch default when process.env.IMAGE_GEN_PROVIDER matches no case (openai, ollama, lemonade, openrouter). The function reads the provider directly from the env var, so any unsupported value — including an empty string when image generation is invoked — yields this error. It is the image-gen analogue of the LLM provider switch.","triggerScenarios":"IMAGE_GEN_PROVIDER unset or set to an unsupported value while a feature requests an image generator. Calling getImageGeneratorProvider() when the user never configured image generation.","commonSituations":"Enabling an image-generation feature flag without setting IMAGE_GEN_PROVIDER; a typo in the env var; upgrading to a build where a provider key was renamed; leaving the value blank and triggering doodle/image generation.","solutions":["Set IMAGE_GEN_PROVIDER to a supported value ('openai', 'ollama', 'lemonade', 'openrouter') or disable the image feature.","Guard callers: only invoke getImageGeneratorProvider() when the user has actually enabled image generation.","Trim/validate the env value at startup and fail fast with a clear message.","Confirm the matching ImageGenerators/*.js module exists in this build."],"exampleFix":"// before\nconst gen = getImageGeneratorProvider(); // IMAGE_GEN_PROVIDER unset\n\n// after\nif (!process.env.IMAGE_GEN_PROVIDER)\n  throw new ConfigError('IMAGE_GEN_PROVIDER must be set to use image generation');\nconst gen = getImageGeneratorProvider();","handlingStrategy":"validation","validationCode":"const SUPPORTED_IMG = ['openai','ollama','lemonade','openrouter'];\nif (process.env.IMAGE_GEN_PROVIDER && !SUPPORTED_IMG.includes(process.env.IMAGE_GEN_PROVIDER))\n  throw new Error(`IMAGE_GEN_PROVIDER '${process.env.IMAGE_GEN_PROVIDER}' is not supported`);","typeGuard":"function isSupportedImageProvider(v): v is string {\n  return ['openai','ollama','lemonade','openrouter'].includes(v);\n}","tryCatchPattern":"try {\n  const gen = getImageGeneratorProvider();\n} catch (e) {\n  if (e.message.startsWith('No valid image generation provider'))\n    return res.status(503).json({ error: 'Image generation not configured' });\n  throw e;\n}","preventionTips":["Only call getImageGeneratorProvider() when the user enabled image generation.","Validate IMAGE_GEN_PROVIDER at startup.","Disable image features in the UI when the env var is unset."],"tags":["config","image-generation","provider","environment"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}