Mintplex-Labs/anything-llm · error

No docPath provided in request

Error message

No docPath provided in request

What it means

fileData resolves a document's docpath to a file under the storage documents folder and throws immediately when called with a null/undefined/empty path. It is a guard against callers invoking the document lookup without the required docPath, e.g. a malformed request to a document endpoint.

Solutions

  1. Ensure the caller (frontend or API client) always sends the docPath parameter.
  2. Check the endpoint's query/body for the docPath field before invoking fileData.
  3. Return a 400 to clients early instead of letting the guard throw.
  4. Encode the docPath correctly in the request URL (encodeURIComponent) so it is not dropped.

Example fix

// before
await fileData(searchParams.docPath);
// after
const docPath = searchParams.get('docPath');
if (!docPath) return response.status(400).json({ error: 'docPath is required' });
await fileData(docPath);
Defensive patterns

Strategy: validation

Validate before calling

// caller-side check before hitting the endpoint
const docPath = new URL(request.url).searchParams.get('docPath');
if (!docPath) return response.status(400).json({ error: 'docPath query parameter is required' });

Type guard

function hasDocPath(args) {
  return typeof args?.docPath === 'string' && args.docPath.trim().length > 0;
}

Try / catch

try {
  const data = await fileData(docPath);
} catch (e) {
  if (/No docPath provided/.test(e.message)) {
    return response.status(400).json({ error: 'docPath is required' });
  }
  throw e;
}

Prevention

When it happens

Trigger: Calling fileData(null), fileData(), or an API route that forwards an empty docPath/doc query parameter into fileData.

Common situations: Frontend sending a request without the docPath query param; URL-encoded docPath lost in a redirect; API client calling the document endpoint with a missing field; older clients after the API contract changed to require docPath.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of Mintplex-Labs/anything-llm@f92433b4ea (2026-09-22). Data as JSON: /api/errors/3fc147e9e6135186. Report an issue: GitHub.

Appendix: source

Thrown at server/utils/files/index.js:31

    ? path.resolve(__dirname, `../../storage/direct-uploads`)
    : path.resolve(process.env.STORAGE_DIR, `direct-uploads`);
const vectorCachePath =
  process.env.NODE_ENV === "development"
    ? path.resolve(__dirname, `../../storage/vector-cache`)
    : path.resolve(process.env.STORAGE_DIR, `vector-cache`);
const hotdirPath =
  process.env.NODE_ENV === "development"
    ? path.resolve(__dirname, `../../../collector/hotdir`)
    : path.resolve(process.env.STORAGE_DIR, `../../collector/hotdir`);
const generatedImagesPath =
  process.env.NODE_ENV === "development"
    ? path.resolve(__dirname, `../../storage/generated-images`)
    : path.resolve(process.env.STORAGE_DIR, `generated-images`);

// Should take in a folder that is a subfolder of documents
// eg: youtube-subject/video-123.json
async function fileData(filePath = null) {
  if (!filePath) throw new Error("No docPath provided in request");
  // The raw filePath is what gets persisted as a document's `docpath` and later
  // resolved directly by background jobs, so it must stay inside the documents
  // folder on its own and not only after normalization strips a leading `../`.
  if (!isWithin(documentsPath, path.resolve(documentsPath, filePath)))
    return null;
  const fullFilePath = path.resolve(documentsPath, normalizePath(filePath));
  if (!fs.existsSync(fullFilePath) || !isWithin(documentsPath, fullFilePath))
    return null;

  const data = fs.readFileSync(fullFilePath, "utf8");
  return JSON.parse(data);
}

function listFolders() {
  if (!fs.existsSync(documentsPath)) fs.mkdirSync(documentsPath);
  const folders = [];

  for (const file of fs.readdirSync(documentsPath)) {

View on GitHub (pinned to f92433b4ea)