itwanger/toBeBetterJavaer · error · Error

Sidebar file not found: ${options.sidebar}

Error message

Sidebar file not found: ${options.sidebar}

What it means

Thrown by main() in scripts/sync-sidebar.js when the sidebar file (default <repo>/docs/src/.vuepress/sidebar.ts, overridable with --sidebar, resolved against the repo root) does not exist. The check runs before any parsing, so nothing is read or modified.

Source

Thrown at scripts/sync-sidebar.js:132

        route: options.route,
        dir: options.dir,
        fallbackGroup: options.fallbackGroup,
      },
    ];
  }
  return DEFAULT_TARGETS;
}

function main() {
  try {
    const options = parseArgs(process.argv.slice(2));
    if (options.help) {
      printHelp();
      return;
    }

    if (!fs.existsSync(options.sidebar)) {
      throw new Error(`Sidebar file not found: ${options.sidebar}`);
    }

    let source = fs.readFileSync(options.sidebar, "utf8");
    const originalSource = source;
    const reports = [];

    for (const target of createTargets(options)) {
      const result = syncTarget(source, target);
      source = result.source;
      reports.push(result.report);
    }

    const changed = source !== originalSource;
    for (const report of reports) {
      if (options.verbose || report.added.length > 0 || report.removed.length > 0 || report.warnings.length > 0) {
        printReport(report);
      }
    }

View on GitHub (pinned to 6617f5fd0b)

Solutions

  1. Confirm the file exists: `ls docs/src/.vuepress/sidebar.ts` from the repo root
  2. Pass the correct path with `--sidebar=<path>` (resolved relative to the repo root, so repo-relative paths work)
  3. If the sidebar truly moved, update the DEFAULT_SIDEBAR constant or always pass --sidebar

Example fix

# before
node scripts/sync-sidebar.js --sidebar=docs/.vuepress/sidebar.ts

# after
node scripts/sync-sidebar.js --sidebar=docs/src/.vuepress/sidebar.ts
Defensive patterns

Strategy: validation

Validate before calling

const sidebar = path.resolve(REPO_ROOT, sidebarArg || "docs/src/.vuepress/sidebar.ts");
if (!fs.existsSync(sidebar)) { console.error(`sidebar.ts missing at ${sidebar} — pass --sidebar=<path>`); process.exit(2); }

Type guard

const sidebarExists = (p) => fs.existsSync(path.resolve(REPO_ROOT, p || "docs/src/.vuepress/sidebar.ts"));

Try / catch

catch (err) { if (err.message.startsWith("Sidebar file not found:")) { console.error("Point --sidebar at the real file (paths resolve from the repo root)"); process.exit(2); } throw err; }

Prevention

When it happens

Trigger: `--sidebar` pointing at a moved/renamed file; running from a fork where sidebar.ts has a different layout; typo in the path; running outside the repo with a cwd-relative path that resolves wrongly against ROOT_DIR.

Common situations: VuePress config restructured (e.g. sidebar moved out of .vuepress or renamed to .ts->.js); path given relative to the wrong base; case-sensitivity differences on Linux.

Related errors


AI-assisted analysis of itwanger/toBeBetterJavaer@6617f5fd0b (2026-08-14). Data as JSON: /api/errors/2330fd2af2ab6a50. Report an issue: GitHub.