сохраните асинхронную функцию в виде строки или в структуре данных, чтобы ее текст отображался в моем браузере

#javascript #node.js #api #http

Вопрос:

Я пытаюсь ПОЛУЧИТЬ /твиты?запрос=YOUR_STRING Эта конечная точка должна получить строку и вернуть 10 последних твитов из API Twitter.

Я не могу заставить асинхронную функцию отображаться на моем локальном хосте.

Что я делаю не так?

 const Twit = require('twit')
const notifier = require('node-notifier');
const open = require('open');
const http = require('http')
const path = require('path')
const os = require('os')
const express = require('express')
const app = express()

var T = new Twit({
  consumer_key:         apikey,
  consumer_secret:      apiSecretKey,
  access_token:         accessToken,
  access_token_secret:  accessTokenSecret,
});
const apikey = 'oassIPpuUqqfCri407vaWRB83'
const apiSecretKey = '1ceYohWwmQyaimX6TlzG7YdeOMfTKaIOGlxynY7QlUlKO5RSOy'
const accessToken = '1404495546358931460-K9WqJMxXq9Rc83mDMplxmaAJpbg62C'
const accessTokenSecret = 'E84yMWyP4uuOM4N1u96YQ1fKfcI72uzjymBO9cepvEltl'

var totalMemory = os.totalmem()
var freeMemory = os.freemem()
var osType = os.type()
var CPUusage = os.cpus()
let nowTweets = (async () => {
T.get('search/tweets', { q: 'since:now', count: 10 }, function(err, data, 
response) {
const tweets = data.statuses
.map(tweet => tweet.text)
console.log(tweets);
  })
})



app.get('/health',(req, res) => {
  res.send('Total Memory: '   totalMemory   'n'  
  'Free Memory: '   freeMemory   'n'  
  'OS: '   osType   'n'  
  'CPU usage: '   CPUusage)
})

app.get('/tweets',(req, res) => {
  res.send('Tweets: '  'n'   nowTweets)
})
const port = process.env.PORT || 3000
app.listen(port, () => console.log('Listening on port ${port}'))
 

Комментарии:

1. не уверен, что это настоящие токены, но вам следует очистить свои сообщения перед отправкой

2. они больше не жизнеспособны

Ответ №1:

похоже на асинхронную проблему с вашей nowTweets функцией. Кроме того, нет смысла иметь async на нем, так как он использует обратные вызовы. Обновленный код ниже

 const Twit = require('twit')
const notifier = require('node-notifier');
const open = require('open');
const http = require('http')
const path = require('path')
const os = require('os')
const express = require('express')
const app = express()

var T = new Twit({
    consumer_key: apikey,
    consumer_secret: apiSecretKey,
    access_token: accessToken,
    access_token_secret: accessTokenSecret,
});
const apikey = 'oassIPpuUqqfCri407vaWRB83'
const apiSecretKey = '1ceYohWwmQyaimX6TlzG7YdeOMfTKaIOGlxynY7QlUlKO5RSOy'
const accessToken = '1404495546358931460-K9WqJMxXq9Rc83mDMplxmaAJpbg62C'
const accessTokenSecret = 'E84yMWyP4uuOM4N1u96YQ1fKfcI72uzjymBO9cepvEltl'

var totalMemory = os.totalmem()
var freeMemory = os.freemem()
var osType = os.type()
var CPUusage = os.cpus()

let nowTweets = (cb) => {
    T.get('search/tweets', { q: 'since:now', count: 10 }, function (err, data,response) {
        const tweets = data.statuses
            .map(tweet => tweet.text)
        console.log(tweets);
        cb(tweets)
    })
}

app.get('/health', (req, res) => {
    res.send('Total Memory: '   totalMemory   'n'  
        'Free Memory: '   freeMemory   'n'  
        'OS: '   osType   'n'  
        'CPU usage: '   CPUusage)
})

app.get('/tweets', (req, res) => {
    nowTweets(tweets => {
        res.send('Tweets: '   'n'   tweets)
    })
})
const port = process.env.PORT || 3000
app.listen(port, () => console.log('Listening on port ${port}'))
 

Комментарии:

1. разум «помечает как ответ», чтобы другие могли извлечь выгоду