AlistGo/alist · error

share_ids is empty

Error message

share_ids is empty

What it means

DoubaoShare.initShareList refuses to start when the addition field share_ids is empty. share_ids is the mount's only source of configuration (one share per line, optionally 'path|share_id'), so an empty value means the storage was added with no configuration.

Source

Thrown at drivers/doubao_share/util.go:185

		// 记录当前游标
		cursorHistory[r.NodeInfoData.NextCursor] = true

		// 递归获取下一页
		nextFiles, err := d.getShareOverviewWithHistory(shareId, r.NodeInfoData.NextCursor, cursorHistory)
		if err != nil {
			return nil, err
		}

		resp = append(resp, nextFiles...)
	}

	return resp, nil
}

func (d *DoubaoShare) initShareList() error {
	if d.Addition.ShareIds == "" {
		return fmt.Errorf("share_ids is empty")
	}

	// 解析分享配置
	shareConfigs, rootShares, err := d._parseShareConfigs()
	if err != nil {
		return err
	}

	// 检查路径冲突
	if err := d._detectPathConflicts(shareConfigs); err != nil {
		return err
	}

	// 构建树形结构
	rootMap := d._buildTreeStructure(shareConfigs, rootShares)

	// 提取顶级节点
	topLevelNodes := d._extractTopLevelNodes(rootMap, rootShares)

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Open the storage's settings in the admin UI and fill share_ids with at least one line: 'share_id' or 'mount_path|share_id'.
  2. If created via API/CLI, include "addition": {"share_ids": "..."} in the payload.
  3. Restart/refresh the storage after saving so initShareList re-runs.

Example fix

// before
{"driver": "DoubaoShare", "addition": {"share_ids": ""}}

// after
{"driver": "DoubaoShare", "addition": {"share_ids": "7412365891234567890"}}
Defensive patterns

Strategy: validation

Validate before calling

if strings.TrimSpace(d.Addition.ShareIds) == "" {
    return fmt.Errorf("share_ids is empty: add at least one 'share_id' or 'path|share_id' line")
}

Prevention

When it happens

Trigger: Creating a doubao_share storage mount and leaving the share_ids text field blank; the config was saved but the field failed validation/serialization; automation provisioning the mount without the field.

Common situations: First-time setup where the user skipped the required field; config imported from another instance missing the field; the UI marking it required but an API-created mount bypassing that.

Related errors


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/2440a383374a1148. Report an issue: GitHub.