{"record":{"id":"88536448aedbb051","repo":"affaan-m/ECC","slug":"install-config-not-found-resolvedpath","errorCode":null,"errorMessage":"Install config not found: ${resolvedPath}","messagePattern":"Install config not found: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"scripts/lib/install/config.js","lineNumber":62,"sourceCode":"  }\n\n  const cwd = options.cwd || process.cwd();\n  return path.isAbsolute(configPath)\n    ? configPath\n    : path.normalize(path.join(cwd, configPath));\n}\n\nfunction findDefaultInstallConfigPath(options = {}) {\n  const cwd = options.cwd || process.cwd();\n  const candidatePath = path.join(cwd, DEFAULT_INSTALL_CONFIG);\n  return fs.existsSync(candidatePath) ? candidatePath : null;\n}\n\nfunction loadInstallConfig(configPath, options = {}) {\n  const resolvedPath = resolveInstallConfigPath(configPath, options);\n\n  if (!fs.existsSync(resolvedPath)) {\n    throw new Error(`Install config not found: ${resolvedPath}`);\n  }\n\n  const raw = readJson(resolvedPath, path.basename(resolvedPath));\n  const validator = getValidator();\n\n  if (!validator(raw)) {\n    throw new Error(\n      `Invalid install config ${resolvedPath}: ${formatValidationErrors(validator.errors)}`\n    );\n  }\n\n  return {\n    path: resolvedPath,\n    version: raw.version,\n    target: raw.target || null,\n    profileId: raw.profile || null,\n    moduleIds: dedupeStrings(raw.modules),\n    includeComponentIds: dedupeStrings(raw.include),","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/scripts/lib/install/config.js#L44-L80","documentation":"loadInstallConfig() resolves the requested install config path and checks it with fs.existsSync() before reading. When no file exists at the resolved path it throws this error naming the fully resolved path. It is the installer's guard against running an install from a missing or misconfigured config file.","triggerScenarios":"Calling loadInstallConfig('path/to/config.json') where the file does not exist on disk; running the installer with a --config flag pointing to a typoed, deleted, or never-created config path; passing a path relative to the wrong working directory so resolveInstallConfigPath lands on a nonexistent absolute path.","commonSituations":"Fresh clone without the expected config checked in; developer deletes or renames a custom install config but old scripts/aliases still reference it; running the installer from a different cwd than intended so relative config paths resolve elsewhere; typos like instal-config.json.","solutions":["Check the resolved path printed in the error and verify the file exists there (ls <resolvedPath>); create or restore it if missing.","Fix the config path you passed (--config / loadInstallConfig argument) — correct typos and use an absolute path when unsure of cwd.","If the config should come from the repo, pull/checkout the latest changes so the default config file is present.","Run the installer from the repository root so relative config paths resolve as documented."],"exampleFix":"// before\nloadInstallConfig('instal-config.json')\n// after\nloadInstallConfig(path.join(repoRoot, 'manifests', 'install-config.json'))","handlingStrategy":"validation","validationCode":"const fs = require('fs');\nconst resolved = require('path').resolve(configPath);\nif (!fs.existsSync(resolved)) {\n  throw new Error(`Install config not found before call: ${resolved}`);\n}\nloadInstallConfig(resolved);","typeGuard":"function configExists(p) { return typeof p === 'string' && fs.existsSync(p) && fs.statSync(p).isFile(); }","tryCatchPattern":"try {\n  const config = loadInstallConfig(configPath);\n} catch (err) {\n  if (err.message.startsWith('Install config not found')) {\n    console.error(`Config missing at ${configPath}; create it or pass --config <path>`);\n    process.exitCode = 1;\n  } else throw err;\n}","preventionTips":["Use absolute paths for install configs so cwd changes cannot break resolution.","Commit default install configs to the repository and reference them via repo-root-relative joins.","Check fs.existsSync on the resolved path before invoking the installer in scripts.","Keep one canonical config path constant instead of scattering relative paths in aliases."],"tags":["config","file-not-found","installer"],"backgroundTag":"config-file-not-found","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}