【问题标题】:How to show tweets with twitter api on express.js with node.js?如何使用 node.js 在 express.js 上使用 twitter api 显示推文?
【发布时间】:2018-12-25 19:12:48
【问题描述】:

我正在尝试在客户端显示 twits。已经尝试使用 express-generator 但它不起作用。 我可以在控制台中看到它们,但我无法将它们拿出来并显示在前面。我相信它应该很简单。 请帮忙! 谢谢

server.js

const http = require('http')
const port = 5004;
const app = require('./app')
const mongoConnection = require('./db/config/mongoConnection')

http
   .createServer()
   .on('request', app)
   .on('error', function(error){
    switch (error.code){
     case 'EADDRINUSE':
      console.log('error')
     break;
     case 'EACCES':
     console.log('error de permisos')
     break;
     default:
     throw error;
    }
 })
.listen(port)

app.js

const express = require('express');
const twitsModel = require('./db/models/twits')
const controller = require('./controller')
const bodyParser = require('body-parser')
const twitter = require('twitter'); 
const config = require('./config') 
const client = new twitter(config); 

const params = {
     q: 'apple', count: 3 
}

const app = express()
.use(bodyParser.urlencoded({extended: true}))
.use(bodyParser.json())


client.get('search/tweets', params, function(error, tweets, response){
    console.log(tweets)
})
.use(express.static('./public')) // -----> it does not work


module.exports = app

【问题讨论】:

    标签: node.js express twitter


    【解决方案1】:

    主文件通常称为server.js app.js。两者兼有并没有多大意义。在您的情况下,将代码保存在一个文件中更简单。

    const twitsModel = require('./db/models/twits')
    const controller = require('./controller')
    const bodyParser = require('body-parser')
    const twitter = require('twitter'); 
    const config = require('./config') 
    const client = new twitter(config); 
    const http = require('http')
    const port = 5004;
    const mongoConnection = require('./db/config/mongoConnection')
    
    function sendTweet(req, res) {
      const params = {
         q: 'apple', count: 3 
      } 
    
     client.get('search/tweets', params, function(error, tweets, response){
        if(error) {
           console.log("Error getting tweets");
           return;
        }
        console.log(tweets);
        res.writeHead(200, {'Content-Type': 'application/json'});
        res.end(JSON.stringify(tweets)); // This line sends the tweets to the client making the http request.
        });
    });
    
    
    http.createServer(sendTweet).listen(port)
    

    【讨论】:

    • 谢谢!试试看还是不行,说“第一个参数必须是字符串或缓冲区”有什么线索吗?
    • tweets是对象,res不是对象模式流,res.end(JSON.stringify(tweets))也是如此
    猜你喜欢
    • 2015-12-03
    • 2013-08-19
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2011-04-18
    相关资源
    最近更新 更多