{"record":{"id":"b3fbde18ffd0958a","repo":"hcengineering/platform","slug":"missing-env-variables-missingenv-join-b3fbde","errorCode":null,"errorMessage":"Missing env variables: ${missingEnv.join(', ')}","messagePattern":"Missing env variables: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"services/telegram/pod-telegram/src/config.ts","lineNumber":82,"sourceCode":"const config = (() => {\n  const ttl = parseNumber(process.env[envMap.TelegramAuthTTL])\n  const params: Partial<Config> = {\n    Host: process.env[envMap.Host],\n    Port: parseNumber(process.env[envMap.Port]),\n    TelegramApiID: parseNumber(process.env[envMap.TelegramApiID]),\n    TelegramApiHash: process.env[envMap.TelegramApiHash],\n    TelegramAuthTTL: ttl === undefined ? ttl : ttl * 1000,\n    MongoDB: process.env[envMap.MongoDB],\n    MongoURI: process.env[envMap.MongoURI],\n    AccountsURL: process.env[envMap.AccountsURL],\n    ServiceID: process.env[envMap.ServiceID],\n    Secret: process.env[envMap.Secret]\n  }\n\n  const missingEnv = required.filter((key) => params[key] === undefined).map((key) => envMap[key])\n\n  if (missingEnv.length > 0) {\n    throw Error(`Missing env variables: ${missingEnv.join(', ')}`)\n  }\n\n  const res = mergeConfigs<Config>(defaults, params)\n  return res\n})()\n\nexport default config\n","sourceCodeStart":64,"sourceCodeEnd":90,"githubUrl":"https://github.com/hcengineering/platform/blob/63e28dc96483967b2fc21c881b3f1023c1de7718/services/telegram/pod-telegram/src/config.ts#L64-L90","documentation":"The pod-telegram service config merges defaults with env values but first checks that every key in `required` is defined, throwing and listing the missing env variable names. It is a startup fail-fast before mergeConfigs is applied.","triggerScenarios":"Starting pod-telegram without required env variables such as telegram API credentials, endpoint, or secret — envMap.Secret here has no ?? fallback, unlike rekoni.","commonSituations":"Missing session/API keys in deployment, secrets not injected, .env ignored, or version upgrades adding required vars; the pod crashes on boot.","solutions":["Set the env variables named in the error message and restart.","Compare your env against required/envMap in services/telegram/pod-telegram/src/config.ts.","Provide Secret and other credentials via the platform's secret management instead of hardcoding.","If a key should be optional, move it out of `required` or give it a ?? default."],"exampleFix":"// before\n# missing TELEGRAM_API_HASH\n// after\nTELEGRAM_API_ID=123456\nTELEGRAM_API_HASH=abcdef1234567890\nSECRET=secret","handlingStrategy":"validation","validationCode":"const required = ['TELEGRAM_API_ID', 'TELEGRAM_API_HASH', 'SECRET'] // mirror envMap in config.ts\nconst missing = required.filter((k) => process.env[k] === undefined)\nif (missing.length > 0) throw new Error(`pod-telegram missing env: ${missing.join(', ')}`)","typeGuard":"function allSet(envMap: Record<string, string>): boolean {\n  return Object.values(envMap).every((name) => process.env[name] !== undefined)\n}","tryCatchPattern":"try {\n  await import('./config.js')\n} catch (err) {\n  if (err.message.startsWith('Missing env variables:')) {\n    console.error('pod-telegram requires:', err.message)\n    process.exit(1)\n  }\n  throw err\n}","preventionTips":["Provision telegram session credentials through platform secrets.","Diff required/envMap in config.ts against deployment env on every upgrade.","Test service boot in staging with a complete env set.","Document each env var in the service README."],"tags":["config","environment","startup","telegram"],"backgroundTag":"missing-env-var","analyzedSha":"63e28dc96483967b2fc21c881b3f1023c1de7718","analyzedAt":"2026-08-29T15:21:27.377Z","schemaVersion":2},"datasetVersion":"2026-08-29T17:17:51.833Z"}