{"record":{"id":"d3abd41f6a833056","repo":"DIYgod/RSSHub","slug":"invalid-year-requestedyear","errorCode":null,"errorMessage":"Invalid year '${requestedYear}'","messagePattern":"Invalid year '(.+?)'","errorType":"validation","errorClass":"InvalidParameterError","httpStatus":400,"severity":"error","filePath":"lib/routes/people/xjpjh.ts","lineNumber":40,"sourceCode":"        supportScihub: false,\n    },\n    radar: [\n        {\n            source: ['jhsjk.people.cn/'],\n            target: '/xjpjh',\n        },\n    ],\n    name: '习近平系列重要讲话',\n    maintainers: ['LogicJake'],\n    handler,\n    url: 'jhsjk.people.cn',\n};\n\nasync function handler(ctx) {\n    const requestedKeyword = ctx.req.param('keyword');\n    const requestedYear = ctx.req.param('year');\n    if (requestedYear && requestedYear !== 'all' && !/^\\d{4}$/.test(requestedYear)) {\n        throw new InvalidParameterError(`Invalid year '${requestedYear}'`);\n    }\n\n    const keyword = requestedKeyword && requestedKeyword !== 'all' ? requestedKeyword : '';\n    const year = requestedYear && requestedYear !== 'all' ? requestedYear : '0';\n    const requestedLimit = Number(ctx.req.query('limit') ?? 10);\n    const limit = Number.isSafeInteger(requestedLimit) && requestedLimit > 0 ? Math.min(requestedLimit, 10) : 10;\n    const title = `习近平系列重要讲话-${keyword || 'all'}-${year === '0' ? 'all' : year}`;\n    const resultUrl = new URL('/result', host);\n    resultUrl.searchParams.set('keywords', keyword);\n    resultUrl.searchParams.set('year', year);\n    const link = resultUrl.href;\n    const response = await got.get(link);\n\n    const $ = load(response.data);\n\n    const list = $('#news_list > li > a[href]')\n        .slice(0, limit)\n        .toArray()","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/DIYgod/RSSHub/blob/bed535e0879dc71c5aff6f1e7bd1ac21ede40115/lib/routes/people/xjpjh.ts#L22-L58","documentation":"Error \"Invalid year '${requestedYear}'\" thrown in DIYgod/RSSHub.","triggerScenarios":"The requested year parameter is not a valid or available archive year.","commonSituations":"See trigger scenarios.","solutions":["Pass a valid year that has archived content available on the site."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"bed535e0879dc71c5aff6f1e7bd1ac21ede40115","analyzedAt":"2026-08-12T19:29:35.364Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}