如何从feed-watcher的Medium订阅更新中提取链接发送到Discord频道
错误原因分析
- 第一个
SyntaxError: Unexpected token o in JSON at position 1报错的核心原因是:你拿到的entry本身已经是解析完成的JavaScript对象,不是JSON字符串,JSON.parse()仅支持传入JSON格式的字符串作为参数,传入对象时会默认将对象转为"[object Object]"字符串再解析,自然会触发语法错误。 - 第二次尝试返回
Link: [Function: link]是因为你用JSON.stringify()把entries数组转成了普通字符串,字符串的索引返回的是单个字符,不可能拿到link属性,这个返回结果大概率是变量名冲突导致的异常输出。
正确实现方式
你不需要做任何JSON序列化/反序列化操作,直接从entry对象上取对应字段即可,示例代码如下:
client.on('ready', () => { watcher.on('new entries', function (entries) { entries.forEach(function (entry) { // 直接读取对象属性 const articleLink = entry.link const articleTitle = entry.title const author = entry.author console.log('提取到的文章链接:', articleLink) // 此处添加Discord消息发送逻辑即可 }) }) watcher .start() .then(function (entries) { console.log('初始加载完成,历史文章数:', entries.length) }) .catch(function(error) { console.error('订阅器运行出错:', error) }) })
如果要做兼容性适配,避免顶层link字段失效,可以补充兜底取原始RSS字段的逻辑:
const articleLink = entry?.link || entry?.['rss:link']?.['#']
内容的提问来源于stack exchange,提问作者RasmonT
相关产品推荐
相关产品推荐

