Чтобы экспортировать некоторое значение, полученное асинхронным вызовом, вам нужно заключить их в Promise или обратный вызов .
При использовании стиля обещания это будет выглядеть так
// File: api.js
module.exports = () => new Promise((resolve, reject) => {
https.get(`https://api.ipdata.co/?api-key=${locationApiKey}`, response => {
try {
let body = " ";
response.on('data', data => {
body += data.toString();
});
response.on('end', () => {
const { latitude, longitude } = JSON.parse(body);
resolve({lat: latitude, lon: longitude});
});
} catch (error) {
reject(error);
}
});
});
Тогда вы можете получить "упакованные" значения, подобные этому
// File: caller.js
const getLocation = require('./api.js');
getLocation()
.then(({lat, lon}) => {
// The values are here
console.log(`Latitude: ${lat}, Longitude: ${lon}`)
}))
.catch(console.error);