DIYgod/RSSHub · error · Error
The user does not exist.
Error message
The user does not exist.
What it means
Thrown when the Pawchive API responds with an empty array for a given service/user id. An empty array means the user has no archived posts in Pawchive, which the route interprets as the user not existing (Pawchive only indexes users that have been requested). It is a plain Error surfaced as a route failure.
Source
Thrown at lib/routes/pawchive/index.tsx:139
}
return <li style={{ listStyleType: 'none' }}>{element}</li>;
})}
</ul>
)}
{post.content && <h2>Content</h2>}
{post.content && raw(post.content)}
</>
);
async function handler(ctx: Context) {
const { service, id } = ctx.req.param();
const apiUrl = `${apiBaseUrl}/${service}/user/${id}`;
const response = await ofetch(apiUrl);
if (response.length === 0) {
throw new Error('The user does not exist.');
}
const author = (await cache.tryGet(`pawchive:${service}:${id}`, async () => {
const profileUrl = `${apiBaseUrl}/${service}/user/${id}/profile`;
const data = await ofetch(profileUrl);
return data.name || 'Unknown User';
})) as Promise<string>;
const items = response.map((post) => {
const description = render(post, processPostFiles(post));
return {
title: post.title || 'Untitled Post',
description,
author,
pubDate: parseDate(post.published),
link: `${baseUrl}/${post.service}/user/${post.user}/post/${post.id}`,
guid: `pawchive:${post.service}:${post.user}:post:${post.id}`,
...generateEnclosureInfo(description),View on GitHub (pinned to bed535e087)
Solutions
- Verify the service/id pair on https://pawchive.pw — confirm the user page exists and lists posts.
- If the user isn't archived, request import on Pawchive first; the RSS feed only works post-archive.
- Double-check the service value ('patreon' or 'fanbox') matches the source platform.
- If the page exists but the API returns [], check Pawchive's API health/rate-limiting.
Example fix
// before
if (response.length === 0) {
throw new Error('The user does not exist.');
}
// after — distinguish 'not archived' from 'wrong id' using the profile lookup
if (response.length === 0) {
throw new Error(`User "${id}" not found on Pawchive under service "${service}" (the user may not be archived yet).`);
} Defensive patterns
Strategy: validation
Validate before calling
const VALID_SERVICES = new Set(['patreon', 'fanbox']);
if (!VALID_SERVICES.has(service)) {
throw new InvalidParameterError(`Unsupported service: ${service}`);
}
// Optionally probe the profile endpoint to distinguish 'not archived' from 'wrong id'. Type guard
const isPawchiveService = (s: string): s is 'patreon' | 'fanbox' => s === 'patreon' || s === 'fanbox';
Try / catch
try {
return await buildFeed(ctx);
} catch (e) {
if (e instanceof Error && /does not exist/.test(e.message)) {
return ctx.json({ error: `User ${id} not found on Pawchive under ${service}.` }, 404);
}
throw e;
} Prevention
- Validate the service segment against the allowed set before the API call.
- Confirm on pawchive.pw that the user has been archived before subscribing.
- Return an allowEmpty feed if a legitimately-empty result is acceptable.
When it happens
Trigger: GET {apiBaseUrl}/{service}/user/{id} returns [] (empty array). response.length === 0 evaluates true and the throw fires. service is 'patreon' or 'fanbox'; id is the upstream user id.
Common situations: The user id is wrong or mistyped; the user exists on Patreon/Fanbox but has never been imported into Pawchive (Pawchive is opt-in/queue-based); the service segment is wrong (e.g. 'patreon' vs 'fanbox'); Pawchive's API silently returns [] on rate-limit.
Related errors
- Category "${categorySlug}" not found
- Invalid tagId
- response.error.message
- No articles found
- Unknown post type: ${type}
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/556c22f95daed823.
Report an issue: GitHub.