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
- Verify the file exists at the resolved path shown in the message.
- Use an absolute path or place the file inside the blog content directory.
- 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
- Commit the xslt file alongside config and verify casing.
- Prefer paths relative to the blog content directory.
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
- Blog feed XSLT file was found at path=${path.relative(proces
- Generating ${feedType} feed failed.
- Directory already exists at path=${dest}!
- Copying Docusaurus template name=${source.template.name} fai
- Copying local template path=${source.path} failed!
AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12).
Data as JSON: /api/errors/a9b8ce27024eae02.
Report an issue: GitHub.