DIYgod/RSSHub · error · ConfigNotFoundError

Tumblr RSS is disabled due to the lack of <a href="https://d

Error message

Tumblr RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>

What it means

ConfigNotFoundError from the Tumblr Tagged route, identical in cause to the Posts route: the handler requires `config.tumblr.clientId` to call `api.tumblr.com/v2/tagged` and aborts if it is missing.

Source

Thrown at lib/routes/tumblr/tagged.ts:47

            {
                name: 'TUMBLR_REFRESH_TOKEN',
                description: 'Please see above for details.',
            },
        ],
        requirePuppeteer: false,
        antiCrawler: false,
        supportBT: false,
        supportPodcast: false,
        supportScihub: false,
    },
    name: 'Tagged Posts',
    maintainers: ['PolarisStarnor'],
    handler,
};

async function handler(ctx: Context): Promise<Data> {
    if (!config.tumblr || !config.tumblr.clientId) {
        throw new ConfigNotFoundError('Tumblr RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>');
    }

    const tag = ctx.req.param('tag');
    const limit = fallback(undefined, queryToInteger(ctx.req.query('limit')), 20);

    const response = await got.get('https://api.tumblr.com/v2/tagged', {
        searchParams: {
            tag,
            api_key: utils.generateAuthParams(),
            limit,
        },
        headers: await utils.generateAuthHeaders(),
    });

    const posts = response.data.response.map((post: any) => utils.processPost(post));

    return {
        title: `Tumblr - ${tag}`,

View on GitHub (pinned to bed535e087)

Solutions

  1. Register a Tumblr OAuth application and set `TUMBLR_CLIENT_ID` + `TUMBLR_CLIENT_SECRET`.
  2. Restart RSSHub so the config loads.
  3. If only consumer secret is set but not client id (or vice versa), supply both — the check requires clientId specifically.
Defensive patterns

Strategy: validation

Validate before calling

if (!config.tumblr?.clientId) { throw new ConfigNotFoundError('Set TUMBLR_CLIENT_ID/TUMBLR_CLIENT_SECRET before enabling Tumblr routes'); }

Type guard

const hasTumblrConfig = (c: unknown): c is { clientId: string } => typeof c === 'object' && c !== null && typeof (c as any).clientId === 'string';

Prevention

When it happens

Trigger: `config.tumblr` is undefined or `config.tumblr.clientId` is falsy on line 48, throwing on line 49. The tagged endpoint additionally requires a valid consumer key for the search params.

Common situations: Same deployment gap as the Posts route: missing `TUMBLR_CLIENT_ID`/`TUMBLR_CLIENT_SECRET`; only one of the two Tumblr routes was being used and the env was never set.

Related errors


AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12). Data as JSON: /api/errors/4a0c59ed8b081c57. Report an issue: GitHub.