DIYgod/RSSHub · error · ConfigNotFoundError

Iwara subscription RSS is disabled due to the lack of <a hre

Error message

Iwara subscription 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

Thrown as `ConfigNotFoundError` by the Iwara subscriptions route when `config.iwara` lacks `username` or `password`. The route logs into Iwara via a headless browser (Playwright) using username+password — there is no anonymous/cookie mode. Without credentials it aborts before launching the browser.

Source

Thrown at lib/routes/iwara/subscriptions.ts:66

        nsfw: true,
    },
    radar: [
        {
            source: ['www.iwara.tv/subscriptions/videos', 'www.iwara.tv/subscriptions/images'],
        },
    ],
    name: 'User Subscriptions',
    maintainers: ['FeCCC'],
    handler,
    url: 'www.iwara.tv/',
    description: `::: warning
This route requires username and password, therefore it's only available when self-hosting, refer to the [Deploy Guide](https://docs.rsshub.app/deploy/config#route-specific-configurations) for route-specific configurations.
:::`,
};

async function handler() {
    if (!config.iwara || !config.iwara.username || !config.iwara.password) {
        throw new ConfigNotFoundError('Iwara subscription RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>');
    }

    const username = config.iwara.username;
    const password = config.iwara.password;

    const { page, destroy } = await getPlaywrightPage(rootUrl, {
        gotoConfig: {
            waitUntil: 'domcontentloaded',
        },
    });

    try {
        const fetchApi = (url: string, options: any) =>
            page.evaluate(
                async (args) => {
                    const res = await fetch(args.url, {
                        method: args.options.method || 'GET',
                        headers: args.options.headers,

View on GitHub (pinned to bed535e087)

Solutions

  1. Set `IWARA_USERNAME` and `IWARA_PASSWORD` in the RSSHub environment and restart.
  2. Ensure Playwright/Chromium is installed (`npm exec playwright install chromium` or the project's puppeteer-equivalent setup) since this route uses `getPlaywrightPage`.
  3. Verify the account is valid by logging in on iwara.tv manually first.

Example fix

// before: no iwara config
// after: .env
IWARA_USERNAME=your_account
IWARA_PASSWORD=your_password
Defensive patterns

Strategy: validation

Validate before calling

if (!config.iwara?.username || !config.iwara?.password) {
  throw new ConfigNotFoundError('Iwara subscriptions require IWARA_USERNAME and IWARA_PASSWORD');
}

Type guard

const iwaraCredsOk = (c?: {username?:string;password?:string}): c is {username:string;password:string} =>
    Boolean(c && c.username && c.password);

Prevention

When it happens

Trigger: Self-hosted RSSHub where `IWARA_USERNAME`/`IWARA_PASSWORD` are not set and a request hits `/iwara/subscriptions`. Fires at subscriptions.ts:66.

Common situations: Fresh deploy without the iwara env block; `.env` missing; public instance (rsshub.app) which does not provide credentials; the route also requires Playwright/Chromium to be installed (`requireConfig`/puppeteer-equivalent), so missing browser binaries compound the failure.

Related errors


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