#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. разум «помечает как ответ», чтобы другие могли извлечь выгоду