AlistGo/alist · error
resolve root folder path failed: folder %q not found under p
Error message
resolve root folder path failed: folder %q not found under parent %s
What it means
Same RootPath resolution walk, but for a nested segment: the folder named `name` was not found under the already-resolved parent whose ID is parentID. Only the first segment produces the 'under /' variant; every deeper segment produces this one.
Source
Thrown at drivers/guangyapan/driver.go:524
}
for _, item := range resp.Data.List {
seen++
if item.ResType == 2 && item.FileName == name {
return item.FileID, nil
}
}
if len(resp.Data.List) < pageSize {
break
}
if resp.Data.Total > 0 && seen >= resp.Data.Total {
break
}
}
if parentID == "" {
return "", fmt.Errorf("resolve root folder path failed: folder %q not found under /", name)
}
return "", fmt.Errorf("resolve root folder path failed: folder %q not found under parent %s", name, parentID)
}
func (d *GuangYaPan) ensureAccessToken(ctx context.Context) error {
if strings.TrimSpace(d.AccessToken) != "" {
return nil
}
if strings.TrimSpace(d.RefreshToken) == "" {
if d.canSMSLogin() {
return d.loginBySMSCode(ctx)
}
if d.PhoneNumber != "" {
return errors.New("not logged in yet: please fill verify_code and save storage to finish SMS login")
}
return errors.New("access token is empty")
}
return d.refreshToken(ctx)
}
View on GitHub (pinned to 843d9dc814)
Solutions
- Check each intermediate folder in RootPath exists with the exact spelling and case.
- Shorten RootPath to a known-good parent and browse down to confirm where resolution breaks.
- Fix or recreate the missing intermediate folder on the provider.
Defensive patterns
Strategy: validation
Try / catch
if err := storage.Init(ctx); err != nil {
if strings.Contains(err.Error(), "not found under parent") {
// nested segment missing: prompt user to verify each path level
}
} Prevention
- Keep RootPath shallow to reduce resolution failures.
- Use exact casing; folder matching here is exact-string.
- After provider-side reorganizations, re-validate the configured path.
When it happens
Trigger: resolveRootFolderID iterates segments of RootPath; for segment index > 0 it lists children of the resolved parent and finds no match, then returns this error naming the offending parent ID.
Common situations: A subfolder in RootPath (/photos/2024) was renamed or deleted; case-sensitive name mismatch (Photos vs photos); partial visibility of a shared folder.
Related errors
- resolve root folder path failed: folder %q not found under /
- login failed: provide a valid access_token, or refresh_token
- upload token is incomplete
- not logged in yet: please fill verify_code and save storage
- {message}
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/a23d914c2da831ef.
Report an issue: GitHub.