DIYgod/RSSHub · error · ConfigNotFoundError
GitHub trending RSS is disabled due to the lack of <a href="
Error message
GitHub trending 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
The GitHub trending route scrapes github.com/trending and requires an authenticated request, so it demands `config.github.access_token`. If `config.github` is absent or has no access_token the handler throws ConfigNotFoundError with an HTML link to the deploy config docs. This is a deployment-configuration failure, not user input.
Source
Thrown at lib/routes/github/trending.tsx:69
supportBT: false,
supportPodcast: false,
supportScihub: false,
},
radar: [
{
source: ['github.com/trending'],
target: '/trending/:since',
},
],
name: 'Trending',
maintainers: ['DIYgod', 'jameschensmith'],
handler,
url: 'github.com/trending',
};
async function handler(ctx) {
if (!config.github || !config.github.access_token) {
throw new ConfigNotFoundError('GitHub trending RSS is disabled due to the lack of <a href="https://docs.rsshub.app/deploy/config#route-specific-configurations">relevant config</a>');
}
const since = ctx.req.param('since');
const language = ctx.req.param('language') === 'any' ? '' : ctx.req.param('language');
const spoken_language = ctx.req.param('spoken_language') ?? '';
const trendingUrl = `https://github.com/trending/${encodeURIComponent(language)}?since=${since}&spoken_language_code=${spoken_language}`;
const { data: trendingPage } = await got({
method: 'get',
url: trendingUrl,
headers: {
Referer: trendingUrl,
},
});
const $ = load(trendingPage);
const articles = $('article');
const trendingRepos = articles.toArray().map((item) => {
const [owner, name] = $(item).find('h2').text().split('/', 2);View on GitHub (pinned to bed535e087)
Solutions
- Set config.github.access_token (env: GITHUB_ACCESS_TOKEN) with a valid personal access token and restart RSSHub.
- If you cannot supply a token, use a different GitHub route that does not require auth.
- Refer to the linked deploy config docs for the exact env var name.
Defensive patterns
Strategy: validation
Validate before calling
import { config } from '@/config';
function githubTrendingConfigured(): boolean {
return Boolean(config.github?.access_token);
} Type guard
function githubTrendingConfigured(): boolean {
return Boolean(config.github?.access_token);
} Prevention
- Set GITHUB_ACCESS_TOKEN at deploy time; gate the route on its presence.
- Monitor token expiry separately from presence.
When it happens
Trigger: Self-hosting RSSHub without setting GITHUB_ACCESS_TOKEN; a public instance where the operator did not configure the GitHub block.
Common situations: Fresh deploy missing the GitHub credentials env var; the token was revoked or expired (though the check is for presence, not validity).
Related errors
- Authentication failed. Access denied.\n${requestPath}
- Login required
- Disqus RSS is disabled due to the lack of <a href="https://d
- Fanfou RSS is disabled due to the lack of <a href="https://d
- Fanfou RSS is disabled due to the lack of <a href="https://d
AI-assisted analysis of DIYgod/RSSHub@bed535e087 (2026-08-12).
Data as JSON: /api/errors/28db36c72240e651.
Report an issue: GitHub.