facebook/docusaurus · error · Error

Blog feed XSLT file not found at path=${path.relative(proces

Error message

Blog feed XSLT file not found at path=${path.relative(process.cwd(), xsltAbsolutePath)}

What it means

Thrown by getXsltFile when the XSLT file referenced by the feed options (feedOptions.xslt) does not exist on disk at the resolved absolute path. The path can be absolute or relative to the content path / data file path; the message prints it relative to process.cwd() for readability.

Source

Thrown at packages/docusaurus-plugin-content-blog/src/feed.ts:203

      return feedItem;
    }),
  );
}

async function resolveXsltFilePaths({
  xsltFilePath,
  contentPaths,
}: {
  xsltFilePath: string;
  contentPaths: BlogContentPaths;
}) {
  const xsltAbsolutePath: string = path.isAbsolute(xsltFilePath)
    ? xsltFilePath
    : ((await getDataFilePath({filePath: xsltFilePath, contentPaths})) ??
      path.resolve(contentPaths.contentPath, xsltFilePath));

  if (!(await fs.pathExists(xsltAbsolutePath))) {
    throw new Error(
      logger.interpolate`Blog feed XSLT file not found at path=${path.relative(
        process.cwd(),
        xsltAbsolutePath,
      )}`,
    );
  }

  const parsedPath = path.parse(xsltAbsolutePath);
  const cssAbsolutePath = path.resolve(
    parsedPath.dir,
    `${parsedPath.name}.css`,
  );
  if (!(await fs.pathExists(cssAbsolutePath))) {
    throw new Error(
      logger.interpolate`Blog feed XSLT file was found at path=${path.relative(
        process.cwd(),
        xsltAbsolutePath,
      )}

View on GitHub (pinned to 3f483e80e3)

Solutions

  1. Verify the file exists at the resolved path shown in the message.
  2. Use an absolute path or place the file inside the blog content directory.
  3. Check git tracking and casing of the filename on case-sensitive filesystems.

Example fix

// before
blog: { feed: { xslt: 'rss.xslt' } }
// after — file lives in blog/
blog: { feed: { xslt: 'blog/rss.xslt' } }
Defensive patterns

Strategy: validation

Validate before calling

import fs from 'fs-extra';
import path from 'path';
const abs = path.isAbsolute(xslt) ? xslt : path.resolve(contentPath, xslt);
if (!(await fs.pathExists(abs))) throw new Error(`XSLT not found: ${abs}`);

Prevention

When it happens

Trigger: Setting the blog feed `xslt` option to a path that does not resolve to an existing file. Triggered during feed generation in generateXsltFiles when fs.pathExists returns false.

Common situations: Typo in the xslt filename, file committed with wrong casing, file not committed to the repo, or a path assumed relative to project root when it is resolved against the content directory.

Related errors


AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12). Data as JSON: /api/errors/a9b8ce27024eae02. Report an issue: GitHub.