FuelLabs/fuels-ts · error · Error

Version '${forcVersion}' not found\n at ${pkgUrl}

Error message

Version '${forcVersion}' not found\n    at ${pkgUrl}

What it means

Thrown by the forc binary install script when the downloaded body from the GitHub release URL (`https://github.com/FuelLabs/sway/releases/download/v<version>/...`) contains the text 'not found', which is how GitHub responds to a 404 for a missing release asset. The `forcVersion` is read from `internal/forc/VERSION`. This runs during the package's postinstall step, so it blocks local setup of the forc toolchain.

Source

Thrown at internal/forc/lib/install.js:62

    const binVersion = readFileSync(binVersionPath, 'utf8').trim();
    versionMatches = binVersion === forcVersion;
    info({
      expected: forcVersion,
      received: binVersion,
      isGitBranch: isGitBranch(forcVersion),
    });
  }

  if (versionMatches) {
    info(`Forc binary already installed, skipping.`);
  } else {
    const stdioOpts = { stdio: 'inherit' };

    // Otherwise, download
    const buf = await fetch(pkgUrl).then((r) => r.buffer());

    if (/not found/i.test(buf.toString())) {
      throw new Error(`Version '${forcVersion}' not found\n    at ${pkgUrl}`);
    }

    writeFileSync(pkgPath, buf);

    // Extract
    execSync(`tar xzf "${pkgPath}" -C "${rootDir}"`, stdioOpts);
    cpSync(versionFilePath, binVersionPath);

    // Cleanup
    rmSync(pkgPath);
  }
})().catch((e) => error(e));

View on GitHub (pinned to b3f37c91ac)

Solutions

  1. Open `internal/forc/VERSION`, read the pinned version, and confirm a matching `forc-binaries-<platform>.tar.gz` asset exists at `https://github.com/FuelLabs/sway/releases/tag/v<version>`.
  2. Bump or downgrade fuels to a release whose pinned forc version has assets for your platform.
  3. Replace the VERSION contents with a `git:<branch>` string to build forc from source instead of downloading (see `isGitBranch` / `buildFromGitBranch` in shared.js).
  4. If behind a proxy, unset it or point `npm_config_https_proxy` at one that can reach GitHub raw release assets.

Example fix

// before: internal/forc/VERSION
0.66.3
// after: pin to a tag that has the asset for your platform, OR build from source
git:master
Defensive patterns

Strategy: validation

Validate before calling

// before triggering the install, verify the release asset exists
import { getCurrentVersion, getPkgPlatform } from './shared.js';
const version = getCurrentVersion().trim();
const platform = getPkgPlatform(); // throws early if unsupported
const url = `https://github.com/FuelLabs/sway/releases/download/v${version}/forc-binaries-${platform}.tar.gz`;
const ok = await fetch(url, { method: 'HEAD' }).then((r) => r.status === 200);
if (!ok) throw new Error(`Forc ${version} asset not found at ${url}`);

Try / catch

try {
  // run the installer
} catch (e) {
  if (/Version '.*' not found/.test(e.message)) {
    console.error('Pinned forc version has no GitHub release asset for this platform. Edit internal/forc/VERSION or build from source via git:<branch>.');
  }
  throw e;
}

Prevention

When it happens

Trigger: The `internal/forc/VERSION` file points at a sway release tag that has no published binary asset for the current platform (e.g. `darwin_arm64`); a downstream fork pinned a version that FuelLabs never released; a corporate proxy/mirror serves an HTML 'not found' page in place of the tarball.

Common situations: Upgrading fuels to a commit whose VERSION references an unreleased forc; running on linux_arm64 when that asset was not uploaded for the tag; a transient GitHub outage returning a 404 HTML body that matches `/not found/i`.

Related errors


AI-assisted analysis of FuelLabs/fuels-ts@b3f37c91ac (2026-08-12). Data as JSON: /api/errors/1a88029bdcf7440d. Report an issue: GitHub.