如何在Node.js中添加并解析多个RSS Feed URL
解决多RSS Feed URL解析失败的问题
问题根源
parse函数仅支持单个URL参数,但你直接传入了URL数组,导致parser.parseURL无法处理,解析逻辑失效。- 异步解析操作未等待全部完成就启动服务器,请求接口时可能解析还未完成,返回空数组。
- 缺少错误处理机制,单个Feed解析失败会阻断整个流程。
修复后的完整代码
import cors from "cors"; import express from "express"; import RSSParser from "rss-parser"; const feedURLs = ["https://yaleclimateconnections.org/feed/", "https://rss2.feedspot.com/https://www.climatelinks.org/blog?context=3710842201"]; const parser = new RSSParser(); let articles = []; const parse = async (url) => { try { const feed = await parser.parseURL(url); // 若需保留原结构,可替换为 feed.items.forEach(item => articles.push({ item })) articles.push(...feed.items); } catch (error) { console.error(`解析Feed失败: ${url}`, error.message); } }; const startServer = async () => { // 等待所有Feed解析完成 await Promise.all(feedURLs.map(parse)); const app = express(); app.use(cors()); app.get('/', (req, res) => { res.send(articles); }); const server = app.listen("4000", () => { console.log("App is listening at http://localhost:4000"); }); return server; }; startServer().catch(err => console.error("服务器启动失败", err)); export default startServer();
关键修改说明
- 遍历URL数组生成解析任务,通过
Promise.all等待所有异步解析完成后再启动服务器,确保接口返回完整数据。 - 为
parse函数添加try/catch,单个Feed解析失败不会影响其他Feed和服务器启动。 - 优化数组添加逻辑,用扩展运算符批量添加Feed条目(可根据需求调整为原有的嵌套结构)。
内容的提问来源于stack exchange,提问作者mtan006
相关产品推荐
相关产品推荐

