affaan-m/ECC · error · Error
Install config not found: ${resolvedPath}
Error message
Install config not found: ${resolvedPath} What it means
Thrown by loadInstallConfig in scripts/lib/install/config.js after resolveInstallConfigPath joins options.cwd for relative paths. fs.existsSync on the resolved path returns false, so the loader refuses with the absolute resolved path in the message.
Source
Thrown at scripts/lib/install/config.js:60
}
const cwd = options.cwd || process.cwd();
return path.isAbsolute(configPath)
? configPath
: path.normalize(path.join(cwd, configPath));
}
function findDefaultInstallConfigPath(options = {}) {
const cwd = options.cwd || process.cwd();
const candidatePath = path.join(cwd, DEFAULT_INSTALL_CONFIG);
return fs.existsSync(candidatePath) ? candidatePath : null;
}
function loadInstallConfig(configPath, options = {}) {
const resolvedPath = resolveInstallConfigPath(configPath, options);
if (!fs.existsSync(resolvedPath)) {
throw new Error(`Install config not found: ${resolvedPath}`);
}
const raw = readJson(resolvedPath, path.basename(resolvedPath));
const validator = getValidator();
if (!validator(raw)) {
throw new Error(
`Invalid install config ${resolvedPath}: ${formatValidationErrors(validator.errors)}`
);
}
return {
path: resolvedPath,
version: raw.version,
target: raw.target || null,
profileId: raw.profile || null,
moduleIds: dedupeStrings(raw.modules),
includeComponentIds: dedupeStrings(raw.include),View on GitHub (pinned to 01e15490f0)
Solutions
- Check the resolved path printed in the message — is it where you expected?
- Pass options.cwd explicitly: loadInstallConfig(p, { cwd: __dirname }).
- Use an absolute path to remove cwd ambiguity.
- On case-sensitive filesystems, verify the capitalization of every path segment.
Example fix
// before
loadInstallConfig('ecc-install.json'); // run from the wrong cwd
// after
loadInstallConfig('ecc-install.json', { cwd: path.resolve(__dirname) });
// or
loadInstallConfig('/abs/path/to/ecc-install.json'); Defensive patterns
Strategy: validation
Validate before calling
function resolveAndCheck(p, cwd) {
const resolved = path.isAbsolute(p) ? p : path.resolve(cwd || process.cwd(), p);
if (!fs.existsSync(resolved)) {
throw new Error(`Missing install config: ${resolved}`);
}
return resolved;
}
resolveAndCheck(configPath, cwd); Try / catch
try {
loadInstallConfig(p, { cwd });
} catch (err) {
if (/Install config not found/.test(err.message)) {
console.error('Resolved from', cwd, '->', err.message);
}
throw err;
} Prevention
- Resolve config paths to absolute form before invoking the loader.
- Print the cwd in your CLI's error output so users can see where the lookup happened.
- On case-sensitive filesystems, double-check capitalization.
When it happens
Trigger: User passes --config foo.json from a different cwd than expected; a typo in the filename; the file was deleted; case-sensitivity mismatch on Linux.
Common situations: Running the installer from a directory other than the one containing the config; CI that assumes cwd is the repo root but isn't; a path that worked on macOS/Windows (case-insensitive) but fails on Linux.
Related errors
- Invalid JSON in ${label}: ${error.message}
- An install config path is required
- Invalid install config ${resolvedPath}: ${formatValidationEr
AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13).
Data as JSON: /api/errors/88536448aedbb051.
Report an issue: GitHub.