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

无需Express:Node.js开发Twitter机器人时如何发布Reddit内容

不用Express,如何将Reddit数据填入Twitter发布请求?

嘿,你现在的核心问题是没处理好异步代码的执行顺序!axios请求Reddit数据是异步操作,而你把Twitter的发布代码写在了.then()外面,这时候redditdata还没被赋值,自然没法正确拿到标题和URL。不用Express完全没问题,因为这个脚本只是做数据抓取和发布,不需要处理HTTP请求,直接调整代码的执行顺序就行。

修改后的完整代码:

// imports
var Twit = require('twit');
var config = require('./config');
var axios = require('axios');

// 先获取Reddit数据,拿到数据后再执行Twitter发布
axios.get('https://api.reddit.com/r/worldnews/hot.json?', {
  params: { sort: 'hot', limit: 1 }
})
.then(response => {
  var redditdata = response.data;
  // 注意Reddit返回的children是数组,要取第一个元素
  const post = redditdata.data.children[0].data;
  const tweetContent = `${post.title} ${post.url}`;
  
  // 在这里调用Twit的post方法,确保数据已经拿到
  var T = new Twit(config);
  T.post('statuses/update', { status: tweetContent }, function(err, data, response) {
    if (err) {
      console.error('发布失败:', err);
      return;
    }
    console.log('发布成功:', data);
  });
})
.catch(err => {
  console.error('获取Reddit数据失败:', err);
});

关键说明:

  • 异步顺序调整:把Twitter的发布逻辑移到axios的.then()回调内部,这样只有当Reddit数据成功返回后,才会执行发布操作。
  • 数据结构修正:Reddit返回的children是一个数组(哪怕你设置了limit=1),所以必须用[0]取出第一个元素,再访问里面的data.title和data.url。
  • 错误处理:添加了.catch()捕获Reddit请求失败的情况,以及发布时的错误判断,方便排查问题。

这样你的脚本就能独立运行,完全不需要Express服务器啦~

内容的提问来源于stack exchange,提问作者Keegan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:44:27