You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中添加并解析多个RSS Feed URL

解决多RSS Feed URL解析失败的问题

问题根源

  1. parse函数仅支持单个URL参数,但你直接传入了URL数组,导致parser.parseURL无法处理,解析逻辑失效。
  2. 异步解析操作未等待全部完成就启动服务器,请求接口时可能解析还未完成,返回空数组。
  3. 缺少错误处理机制,单个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:10:02