В обеих ваших попытках ваша экспортированная функция в баре. js ничего не возвращает. Поскольку вы вызываете асинхронную функцию c (https.get
), вам необходимо, чтобы экспортируемая функция также была асин c. Вы можете конвертировать свою функцию, используя обещания и использовать async / await на вызывающей стороне. Например,
foo. js
const pass = require('./bar');
(async function() {
const test = await pass('https://www.google.com/'); // URL for testing will be API URL
console.log(`The return is: ${test}`);
})();
Обратите внимание на IFEE для получения асинхронной c области в соответствии с: с использованием await в глобальной области без ключевого слова asyn c
бар. js
const https = require('https');
module.exports = (url) => {
return new Promise((resolve, reject) => {
https
.get(url, (res) => {
console.log(res.statusCode)
if (typeof res.statusCode !== 'undefined' && res.statusCode.toString()[0] === '2') {
console.log(`Results: ${res.statusCode}`)
resolve(true)
} else {
resolve(false)
}
})
.on('error', (e) => {
console.error(`Error ${e}`)
resolve(false)
})
});
}
В качестве альтернативы , вы можете использовать обратный вызов следующим образом:
foo. js
const pass = require('./bar');
pass('https://www.google.com/', test => {
console.log(`The return is: ${test}`);
});
бар. js
const https = require('https');
module.exports = (url, callback) => {
https
.get(url, (res) => {
console.log(res.statusCode)
if (typeof res.statusCode !== 'undefined' && res.statusCode.toString()[0] === '2') {
console.log(`Results: ${res.statusCode}`)
callback(true)
} else {
callback(false)
}
})
.on('error', (e) => {
console.error(`Error ${e}`)
callback(false)
})
}