2017-02-16 17 views
0

Прошу прощения, если я пропустил аналогичный вопрос - я просмотрел сайт и ничего не нашел.Узел fs.unlink: объект ошибки отличается на разных машинах

Мой код выглядит следующим образом (после того, как promisified fs.unlink):

return unlinkAsync(file) 
    .catch((err) => { 
     if (err.code === 'ENOENT') { 
      // Not a concern - file didn't exist, and that's ok 
     } else { 
      // Unexpected - propagate it up 
      throw err; 
     } 
    }); 

Проблема: на моей машине (OSX Sierra, узел 5.9.1) err.code существует, и вещи правильно обрабатывается, когда нет файла для удаления. Однако, на другой машине - такая же ОС и версия Узла - err.code не существует - мы видим свойство, называемое «причиной», которое имеет свойство «code», но не err.code.

Я искал исходный код узла (был только узлом кодирования в течение месяца, но я не думаю, что что-то пропустил) и не мог найти ничего, кроме ожиданий вокруг e.code.

Любые советы или рекомендации были бы очень признательны!

Заранее благодарен! John

+0

Вы исключили какие-либо сторонние модули/аддоны? – mscdex

+0

Честно говоря, я даже не думал об этом (слишком новичок в узле) - однако, я проверю, что с разработчиком, чья машина не выставляет err.code - спасибо! – John

ответ

0

В конечном счете это сводилось к старой версии Bluebird (1.2.4) на другой машине-разработчике (спасибо @mscdex!) - последняя версия (3.4.7) предоставляет код err.code, а старшая не.

Однако, на более глубоком уровне это произошло потому, что я пренебрег обновлением нашего пакета.json, чтобы включить версию Bluebird, которую я ожидал - извлеченный урок.

Спасибо!