{"record":{"id":"61cb83adbc48fadd","repo":"DIYgod/RSSHub","slug":"iwara-subscription-rss-is-disabled-due-to-the-lack","errorCode":null,"errorMessage":"Iwara subscription RSS is disabled due to the lack of <a href=\"https://docs.rsshub.app/deploy/config#route-specific-configurations\">relevant config</a>","messagePattern":"Iwara subscription RSS is disabled due to the lack of <a href=\"https://docs\\.rsshub\\.app/deploy/config#route-specific-configurations\">relevant config</a>","errorType":"exception","errorClass":"ConfigNotFoundError","httpStatus":null,"severity":"error","filePath":"lib/routes/iwara/subscriptions.ts","lineNumber":66,"sourceCode":"        nsfw: true,\n    },\n    radar: [\n        {\n            source: ['www.iwara.tv/subscriptions/videos', 'www.iwara.tv/subscriptions/images'],\n        },\n    ],\n    name: 'User Subscriptions',\n    maintainers: ['FeCCC'],\n    handler,\n    url: 'www.iwara.tv/',\n    description: `::: warning\nThis 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.\n:::`,\n};\n\nasync function handler() {\n    if (!config.iwara || !config.iwara.username || !config.iwara.password) {\n        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>');\n    }\n\n    const username = config.iwara.username;\n    const password = config.iwara.password;\n\n    const { page, destroy } = await getPlaywrightPage(rootUrl, {\n        gotoConfig: {\n            waitUntil: 'domcontentloaded',\n        },\n    });\n\n    try {\n        const fetchApi = (url: string, options: any) =>\n            page.evaluate(\n                async (args) => {\n                    const res = await fetch(args.url, {\n                        method: args.options.method || 'GET',\n                        headers: args.options.headers,","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/iwara/subscriptions.ts#L48-L84","documentation":"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.","triggerScenarios":"Self-hosted RSSHub where `IWARA_USERNAME`/`IWARA_PASSWORD` are not set and a request hits `/iwara/subscriptions`. Fires at subscriptions.ts:66.","commonSituations":"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.","solutions":["Set `IWARA_USERNAME` and `IWARA_PASSWORD` in the RSSHub environment and restart.","Ensure Playwright/Chromium is installed (`npm exec playwright install chromium` or the project's puppeteer-equivalent setup) since this route uses `getPlaywrightPage`.","Verify the account is valid by logging in on iwara.tv manually first."],"exampleFix":"// before: no iwara config\n// after: .env\nIWARA_USERNAME=your_account\nIWARA_PASSWORD=your_password","handlingStrategy":"validation","validationCode":"if (!config.iwara?.username || !config.iwara?.password) {\n  throw new ConfigNotFoundError('Iwara subscriptions require IWARA_USERNAME and IWARA_PASSWORD');\n}","typeGuard":"const iwaraCredsOk = (c?: {username?:string;password?:string}): c is {username:string;password:string} =>\n    Boolean(c && c.username && c.password);","tryCatchPattern":null,"preventionTips":["Set Iwara credentials via env at deploy time.","Ensure Playwright/Chromium is installed for this route.","Document that the route is self-host-only."],"tags":["iwara","config-not-found","self-host","authentication","playwright"],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}