У меня есть некоторый код, в котором я сгенерировал некоторые json данные, затем я бы хотел
- записать их в файл, а затем
- достичь конечной точки API (a получить запрос)
Проблема, с которой я сталкиваюсь: когда я выполняю fetch
после использования fs.writeFile
, я получаю ошибку ECONNREFUSED
. Если я не запишу файл, мой запрос get к конечной точке будет успешным. Я помещаю свою выборку в обратный вызов функции writeFile - я также попытался fs.writeFileSync(url)
, которая дает мне те же результаты. Мой полный код требует, чтобы сначала был writeFile.
Я заметил, что если я оберну fetch
в setTimeout
с 10000 мс, тогда будет работать fetch. кажется , как будто writeFile
не ждет достаточно долго, чтобы выполнить функцию обратного вызова.
Я что-то делаю неправильно? или Как правильно написать файл и затем извлечь данные API?
Я свел свой код к самому минимальному примеру для воспроизведения этого поведения, а также позволил узлу правильно возвращать сообщения об ошибках. (используя поддельный URL-адрес для этого примера, поскольку реальный URL-адрес не является общедоступным)
const fetch = require('node-fetch');
const fs = require('fs');
try {
fs.writeFile('./example.json', JSON.stringify(['test', 'one', 'two']), () => {
fetch('http://www.example.com/api_endpoint?q=test')
.then(console.info)
.catch(console.error);
});
} catch (e) {
console.info(e);
}
Я запускаю это в nodejs v10.15.1 на Linux Debian 8.11 (jess ie )