AlistGo/alist · error
unsupported lark export file type: %s
Error message
unsupported lark export file type: %s
What it means
Type-derivation error in the Lark driver's export flow: larkExportType maps the object name's suffix to a Lark drive type (.lark-doc->doc, .lark-docx->docx, .lark-sheet->sheet, .lark-bitable->bitable). Any other extension falls through to the default branch and the whole name is included in the error message.
Source
Thrown at drivers/lark/other.go:261
}
if resp.File == nil {
return nil, "", errors.New("lark export download response missing file")
}
return resp.File, resp.FileName, nil
}
func larkExportType(name string) (string, error) {
switch {
case strings.HasSuffix(name, ".lark-doc"):
return larkdrive.TypeDoc, nil
case strings.HasSuffix(name, ".lark-docx"):
return larkdrive.TypeDocx, nil
case strings.HasSuffix(name, ".lark-sheet"):
return larkdrive.TypeSheet, nil
case strings.HasSuffix(name, ".lark-bitable"):
return larkdrive.TypeBitable, nil
default:
return "", fmt.Errorf("unsupported lark export file type: %s", name)
}
}
func larkExportFormatAllowed(docType, format string) bool {
switch docType {
case larkdrive.TypeDoc, larkdrive.TypeDocx:
return format == larkdrive.FileExtensionPdf || format == larkdrive.FileExtensionDocx
case larkdrive.TypeSheet, larkdrive.TypeBitable:
return format == larkdrive.FileExtensionXlsx || format == larkdrive.FileExtensionCsv
default:
return false
}
}
func larkExportFormatRequiresSubID(docType, format string) bool {
return (docType == larkdrive.TypeSheet || docType == larkdrive.TypeBitable) && format == larkdrive.FileExtensionCsv
}
View on GitHub (pinned to 843d9dc814)
Solutions
- Filter to the four supported pseudo-extensions before requesting an export.
- Upgrade OpenList so newly supported lark types are covered.
- Skip or report non-exportable objects instead of failing the whole batch.
Example fix
// before
for _, obj := range objs {
createExportTask(ctx, obj, req) // fails on README.pdf
}
// after
for _, obj := range objs {
if s := obj.GetName(); strings.HasSuffix(s, ".lark-doc") || strings.HasSuffix(s, ".lark-docx") ||
strings.HasSuffix(s, ".lark-sheet") || strings.HasSuffix(s, ".lark-bitable") {
createExportTask(ctx, obj, req)
}
} Defensive patterns
Strategy: type-guard
Validate before calling
switch {
case strings.HasSuffix(name, ".lark-doc"), strings.HasSuffix(name, ".lark-docx"),
strings.HasSuffix(name, ".lark-sheet"), strings.HasSuffix(name, ".lark-bitable"):
// safe to export
default:
skip("not an exportable lark document: " + name)
} Type guard
func isExportableLarkDoc(name string) bool {
return strings.HasSuffix(name, ".lark-doc") || strings.HasSuffix(name, ".lark-docx") ||
strings.HasSuffix(name, ".lark-sheet") || strings.HasSuffix(name, ".lark-bitable")
} Try / catch
if err != nil && strings.Contains(err.Error(), "unsupported lark export file type") {
continue // skip non-lark objects in batch flows
} Prevention
- Filter objects by pseudo-extension before batch export.
- Upgrade the driver when lark ships new document types.
- Show the object name in error UIs so users see which file was skipped.
When it happens
Trigger: Calling export on a regular file (e.g. .pdf, .txt, .mp4) or on a lark pseudo-extension not in the switch (e.g. .lark-mindnote, .lark-slides). The object simply is not exportable via this API.
Common situations: Scripts that iterate a mixed folder and try to export every object; lark introducing new document kinds (mindnotes, slides) this driver version does not handle; upstream naming conventions changing.
Related errors
- unsupported export format %q for lark type %q
- sub_id is required when exporting lark type %q as %q
- ticket is required
- lark file token not found
- lark export task response missing ticket
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/4534f5c4fdcb5318.
Report an issue: GitHub.