Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 June 12

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
1
не могу понять почему елси проверку делать один раз , то все работает как надо. а если делать два раза с двумя разными папками , то все ломается
Переписать контактенацию во второй проверке.
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
Mehannoying
function isAccess(url) {
 return new Promise(resolve => {
   fs.access(__dirname+url, fs.constants.F_OK, function(err) {
     if (err) return resolve(false)
     fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error) {
       error ? resolve(false) : resolve(true);
     });            
   });
 }).then(exists => {
   if(!exists) {
     res.writeHead(404, {'Content-type':'text/plain; charset=utf-8'});
     res.end(req.url+" 404 Страница не найдена ")
   }
 });
}
Так же неправ обраб ошибка, после первого reject должен быть return иначе будет multipleResolves
источник

Г

Глеб in NodeUA - JavaScript and Node.js in Ukraine
имейте ввиду, что тут
if (err) resolve(false)
fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error)

несмотря на наличие ошибки управление перейдет на строку с access
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Denys
Так же неправ обраб ошибка, после первого reject должен быть return иначе будет multipleResolves
+ Забыл дописать.
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
Ещё советую использовать fs.promises что б не писать это все самому раз уже используете промимы
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Denys
Ещё советую использовать fs.promises что б не писать это все самому раз уже используете промимы
+
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
я вроде все это учил , но вообще ничего не понял из последних сообщений
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
"после первого reject должен быть return иначе будет multipleResolves " особенно вот тут . после reject нужно делать return ?
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
все, ладно , извините.  пойду покопаюсь сам.
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
ошибка в том что нельзя когда используешь new Promise вызывать несколько раз фи resolve\reject а это именно то что и позойдет в той части кода
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
так я больше одного раза и не выполнял
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
multipleResolves это ивент котоый нода выбрасывает потому что в 99% случаев это лшибка програмиста
https://nodejs.org/api/process.html#process_event_multipleresolves
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
Глеб
имейте ввиду, что тут
if (err) resolve(false)
fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error)

несмотря на наличие ошибки управление перейдет на строку с access
вот почему будет несколько ну и если дополнить то
на строку с access и после ее выполнения опять вызовется resolve/reject
источник

1

1 in NodeUA - JavaScript and Node.js in Ukraine
Denys
вот почему будет несколько ну и если дополнить то
на строку с access и после ее выполнения опять вызовется resolve/reject
я же не вызываю несколько раз resolve или reject
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
Mehannoying
function isAccess(url) {
 return new Promise(resolve => {
   fs.access(__dirname+url, fs.constants.F_OK, function(err) {
     if (err) return resolve(false)
     fs.access(__dirname+"/public/"+url, fs.constants.F_OK, function(error) {
       error ? resolve(false) : resolve(true);
     });            
   });
 }).then(exists => {
   if(!exists) {
     res.writeHead(404, {'Content-type':'text/plain; charset=utf-8'});
     res.end(req.url+" 404 Страница не найдена ")
   }
 });
}
я описывал видать то что было до того в соотв с таким кодом но неправ
источник

D

Denys in NodeUA - JavaScript and Node.js in Ukraine
то что там сейчас просто не будет работать потому что в обоих ветках вызывается res() не дожидаясь ответа от фи fs.access (в первой ветке всегда будет res(0) а во второй resolve(undefined) следовательно в последнем then bool будет всегда undefined)
источник

☆Даня☆ in NodeUA - JavaScript and Node.js in Ukraine
Всем привет, ребят, помогите плиз, у меня e.currentTarget = null, как решить данную проблему вот мой код
visibil__show.addEventListener('click', (e) => {
console.log(e);
});
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
☆Даня☆
Всем привет, ребят, помогите плиз, у меня e.currentTarget = null, как решить данную проблему вот мой код
visibil__show.addEventListener('click', (e) => {
console.log(e);
});
currentTarget только для группы элементов, на которых висит один и тот же обработчик.
источник

M

Mehannoying in NodeUA - JavaScript and Node.js in Ukraine
Используйте e.target
источник

☆Даня☆ in NodeUA - JavaScript and Node.js in Ukraine
ок, спасибо
источник