Не понимаю куда лезть в данной ситуации, может кто поможет
Учить javascript. Вы не можете использовать es6 импорты в модулях commonjs, именно это написано в ошибке. В БАС можно использовать только commmonjs импорты(require)
Требуется чтобы Нода корректно (без задержки) возвращала ответ и корректно обрабатывала ошибку при отсутствии интернета (для проверки можно разорвать подключение по локальной сети) (ошибка будет {"errno":"ENOTFOUND","code":"ENOTFOUND","syscall":"getaddrinfo","hostname":"encrypted.google.com"}
Код скрипта:
const https = require('https');
await(new Promise((resolve, reject) => {
var options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET'
};
var req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
console.log(d);
});
});
req.end();
req.on('error', (e) => {
console.log('ошибка');
console.log(e);
resolve()
});
}));
Если я resolve() ставлю там где ошибка (как в коде), то скрипт отрабатывает, но действие не завершается сразу, только после таймаута.
Если я resolve() ставлю после основного ответа (т.е. после console.log(d);), то при отсутствующем интернете, то я получаю ошибку (мне это и надо), но но действие не завершается сразу, только после таймаута.
Мне требуется чтобы после выполнения блока Node.js скрипт БАС продолжил свою работу (т.е. не должно писать красным в лог, с остановкой). При этом при работающем интернете в лог выводился основной ответ (переменная "d"), при отсутствии интернета - выводилась ошибка ({"errno":"ENOTFOUND".....). И все это было без задержек Ноды в 1 минуту.
Полагаю тут нужно добавить условный оператор. Не силен в Ноде. Буду благодарен за любую помощ.
@botovod у вас в запросе нет обработчика ошибки, подойдёт даже такой вариант:
const https = require('https');
await(new Promise((resolve, reject) => {
var options = {
hostname: 'encrypted.google.com',
port: 443,
path: '/',
method: 'GET'
};
var req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
console.log(d);
resolve()
});
res.on('error', (e) => {
console.log('ошибка');
console.log(e);
resolve()
});
});
req.end();
req.on('error', (e) => {
console.log('ошибка');
console.log(e);
resolve()
});
}));
