Всем привет.
Подскажите пожалуйста.
Почему данная async функция возвращает undefined?
В функции находятся SRV и TXT записи и на выходе должна возвращаться ссылка и public key.
Помогите разобраться пожалуйста. Спасибо заранее
Код:
import dnsResolver from 'dns';
import util from 'util';
import mem from 'mem';
const dnsResolveSRV = util.promisify(dnsResolver.resolveSrv);
const dnsResolveTXT = util.promisify(dnsResolver.resolveTxt);
const cacheMaxAge = 3600000; // one hour
const memoizedDnsResolveSRV = mem(dnsResolveSRV, { maxAge: cacheMaxAge });
const memoizedDnsResolveTXT = mem(dnsResolveTXT, { maxAge: cacheMaxAge });
export async function search(peerDomain) {
console.log(`search: peerDomain=${peerDomain}`);
let srvEntries = [];
let protocol = '';
try {
console.log(`search: peerDomain=${peerDomain} srv=_myservice._https.${peerDomain}`);
srvEntries = await memoizedDnsResolveSRV(`_myservice._https.${peerDomain}`);
protocol = 'https';
} catch (err) {
console.log(err);
}
const [srvEntry] = srvEntries;
let publicKey = null;
try {
console.log(`search: peerDomain=${peerDomain} txt=myservice-public-key.${peerDomain}`);
const publicKeyTxtRecords = await memoizedDnsResolveTXT(`myservice-public-key.${peerDomain}`);
publicKey = publicKeyTxtRecords[0].join('');
} catch (err) {
console.log(err);
}
console.log({ msg: 'search: found', peerDomain, srvEntry, protocol });
// если сделать console.log(`${protocol}://${srvEntry.name}:${srvEntry.port}`) до return то все значения есть
return {
url: `${protocol}://${srvEntry.name}:${srvEntry.port}`,
publicKey,
};
}
const { url: baseUrl, publicKey } = search('domain.ru');
console.log(baseUrl);
console.log(publicKey);