infiniflow/ragflow · error · Error
Skills space not found
Error message
Skills space not found
What it means
Thrown in web/src/pages/skills/hooks.ts:773 when ensureSkillSpaceFolder(normalizedSpaceName, true) returns a falsy folder id. That helper looks up (or creates) the root file-manager folder for the skills space; a falsy return means the folder could not be found nor created — e.g. the file-manager API failed, returned code !== 0, or gave a response without an id.
Source
Thrown at web/src/pages/skills/hooks.ts:773
// Filter out ignored/junk files first
const filteredFiles = filterUploadFiles(files);
// Validate skill format
const validation = await validateSkillFormatImpl(filteredFiles);
if (!validation.valid) {
const errorKey = `skills.validation.${validation.error}`;
const errorMsg = t(errorKey) || t('skills.validation.invalid');
message.error(errorMsg);
return false;
}
// Get space folder ID (using space name for file system)
const spaceFolderId = await ensureSkillSpaceFolder(
normalizedSpaceName,
true,
);
if (!spaceFolderId) throw new Error('Skills space not found');
const skillNameNormalized = name.replace(/\s+/g, '-').toLowerCase();
// Check if skill folder exists
const { data: existingData } = await fileManagerService.listFile({
parent_id: spaceFolderId,
});
let skillFolderId: string;
if (existingData.code === 0) {
const existingSkill = existingData.data?.files?.find(
(f: any) => f.name === skillNameNormalized && f.type === 'folder',
);
if (existingSkill) {
// Skill exists, check if version already exists
const { data: versionData } = await fileManagerService.listFile({View on GitHub (pinned to 554fb1133a)
Solutions
- Inspect ensureSkillSpaceFolder's internals: log which call (list vs create) failed and the response code
- Verify the file-manager service is healthy and authenticated (list root folders via UI)
- Check that normalizedSpaceName matches the actual folder name in the file manager
- Have ensureSkillSpaceFolder throw its own descriptive error instead of returning falsy
- Retry the upload after re-login if the token expired
Example fix
// before
const spaceFolderId = await ensureSkillSpaceFolder(
normalizedSpaceName,
true,
);
if (!spaceFolderId) throw new Error('Skills space not found');
// after
const spaceFolderId = await ensureSkillSpaceFolder(
normalizedSpaceName,
true,
);
if (!spaceFolderId) {
message.error(t('skills.errors.spaceFolderUnavailable'));
return false;
} Defensive patterns
Strategy: try-catch
Validate before calling
const spaceFolderExists = async (name: string) => {
const { data } = await fileManagerService.listFile({ parent_id: ROOT });
return (data.data?.files || []).some((f) => f.name === name.trim());
}; Type guard
const isFolderId = (v: unknown): v is string => typeof v === 'string' && v.length > 0;
Try / catch
try {
const id = await ensureSkillSpaceFolder(name, true);
if (!id) throw new Error('space folder unavailable');
} catch (e) {
message.error(e.message);
return false;
} Prevention
- Have ensureSkillSpaceFolder throw detailed errors instead of returning falsy
- Verify the file-manager service responds (list root) before starting uploads
When it happens
Trigger: The file-manager list/create-folder API call failed (auth expired, backend down); the space folder exists in the file manager but under a differently normalized name so lookup misses and creation is rejected; backend returned code 0 but omitted data.id; ensureSkillSpaceFolder swallows an exception and returns undefined.
Common situations: First upload to a new space where folder auto-creation fails silently. Name normalization mismatch (trailing spaces, case) between lookup and creation. Backend file-manager service not initialized.
Related errors
- Failed to create skill folder
- Failed to list skills folder
- Failed to get skill folder ID
- Failed to create version folder
- Failed to get version folder ID
AI-assisted analysis of infiniflow/ragflow@554fb1133a (2026-08-15).
Data as JSON: /api/errors/f9837591ca197ead.
Report an issue: GitHub.