Я выполняю простую выборку API, но получаю следующую ошибку:
UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot remove headers after they are sent to the client
, и я не уверен, почему это происходит:
Код указан ниже, а также напечатан экран ошибки предоставляется. Я не уверен, может ли это быть проблемой, связанной с асинхронным поведением nodejs:
var express = require('express');
var router = express.Router();
var axios = require('axios');
const NodeCache = require('node-cache');
const myCache = new NodeCache();
let hitCount = 0;
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/hello', async function(req, res, next) {
const allData = myCache.get('allData');
if (!allData) {
hitCount++;
console.log(`hit ${hitCount} number of times`);
try {
const { data } = await axios.get(
'https://api.vesselfinder.com/vesselslist?userkey=KEY'
);
const [ metaData, ships ] = data;
myCache.set('allData', data, 70);
console.log(data + 'This is the data');
res.send(data);
} catch (error) {
res.send(error);
console.log(error);
}
}
console.log('this is the data:', allData);
res.send(allData);
});
module.exports = router;
Что я сделал до сих пор , чтобы решить эту проблему ошибка была:
Я использовал этот источник , который имеет широкое объяснение того, в чем может быть проблема, с широким объяснением типа ошибок. Однако было бесполезно понимать, что происходит.
Также я нашел это полезное , а также это , но этот последний, в частности, был ошибкой в коде за недостающее утверждение return
. Кажется, моя ошибка связана с TypeError: data is not iterable
, но это невозможно, потому что моя подписка с предоставленной информацией работает идеально.
Ближайший пост, который я нашел, это этот , который в основном утверждает, что «Иногда это происходит из-за асинхронного поведения nodejs». Теперь я вижу, что это случилось со мной, но я не уверен, как это можно решить в этой ситуации.
Журнал ошибки также показан здесь на экране печати ниже для полноты:
Что я могу сделать, чтобы устранить эту ошибку? Я провел много исследований, и я не уверен, как позаботиться об асинхронном поведении nodejs
. Спасибо за указание правильного направления для решения этой проблемы.