jlcodes99/cockpit-tools · error
messages.noItems
Error message
messages.noItems
What it means
The parsed bundle unwrapped (through 'data' and any nested string payload) to a top-level JSON array that is empty. An empty items list cannot create any accounts, so messages.noItems is thrown (line 411).
Source
Thrown at src/hooks/useProviderAccountsPage.ts:411
readBundleMessage((parsed as { message?: unknown }).message) ??
readBundleMessage((parsed as { error?: unknown }).error) ??
messages.empty,
);
}
}
const root =
parsed && typeof parsed === 'object' && 'data' in parsed
? (parsed as { data?: unknown }).data
: parsed;
if (typeof root === 'string') {
return resolveExternalImportBundleItems(root, platformId, messages);
}
if (Array.isArray(root)) {
if (root.length === 0) {
throw new Error(messages.noItems);
}
return root;
}
if (!root || typeof root !== 'object') {
throw new Error(messages.empty);
}
const provider = (root as { provider?: unknown }).provider;
if (typeof provider === 'string' && provider.trim() && provider.trim() !== platformId) {
throw new Error(messages.providerMismatch);
}
const items = (root as { items?: unknown }).items;
if (Array.isArray(items) && items.length > 0) {
return items;
}
View on GitHub (pinned to 1ed8b77992)
Solutions
- Export again after confirming the source has at least one account
- Remove filters/limits on the export that excluded all items
- If you meant to import a single account, use its object (not an empty array) as the bundle
Example fix
// before
{"data":[]}
// after
{"data":[{"refresh_token":"rt_a"}]} Defensive patterns
Strategy: validation
Validate before calling
const bundle: unknown = JSON.parse(content);
const root = bundle && typeof bundle === 'object' && 'data' in bundle ? (bundle as {data?: unknown}).data : bundle;
if (Array.isArray(root) && root.length === 0) throw new Error('Export contains no items'); Type guard
const isNonEmptyArray = (v: unknown): v is unknown[] => Array.isArray(v) && v.length > 0;
Try / catch
try {
items = resolveExternalImportBundleItems(content, platformId, messages);
} catch (e) {
if (e instanceof Error && e.message === messages.noItems) {
notifyEmptyExport();
}
} Prevention
- Confirm the source account list is non-empty before exporting
- Remove export filters that can exclude all accounts
- Validate the export contains at least one item before importing
When it happens
Trigger: JSON parses fine, root (after envelope unwrap) is an array with length 0.
Common situations: Source account list is genuinely empty (nothing exported yet); export filter excluded all accounts; API returned success with an empty data array; deleted-all-accounts export.
Related errors
- invalidJsonMessage
- messages.providerMismatch
- [ExternalImport][App] 当前版本不支持外部导入方式,已终止导入
- [ExternalImport][App] payload 归一化失败,已忽略
- 未找到有效 Token {:?}
AI-assisted analysis of jlcodes99/cockpit-tools@1ed8b77992 (2026-09-05).
Data as JSON: /api/errors/004ae94ff28232ee.
Report an issue: GitHub.