У меня есть файл движущуюся утилиту на стороне сервера, , если целевой каталог не существует, ошибка Возвращается (по проводам):Node.js фс ошибка расширения
{errno: -2,
code: 'ENOENT',
path: 'uploads/workgroup/message.docx'}
Кусок кода на серверная сторона:
Как вы видите, err.message
игнорируется. Если я создаю новый объект ошибки, все в порядке:
fs.rename(oldpath,newpath, function(err) {
if(err) {
err.message = 'Target directory does not exist.';
var err2 = new Error();
err2.message = err.message;
err2.code = err.code;
err2.path = err.path;
err2.errno = err.errno;
return res.send(400, err2);
}
Я понятия не имею, почему исходный объект ошибка не может быть изменен. Я пробовал console.log(util.inspect(err, {showHidden: true, depth: null}));
, но это не дало много подсказки.
Любое объяснение очень ценится!
MDN документация говорит, что вы не можете изменить прото Error: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype – oshnaps
@oshnaps - Две вещи: 1) OP не модифицирует прототип ошибки. Они просто добавляют «собственное» свойство к существующему объекту. и 2) То, что я прочитал в MDN, говорит: *** вы можете использовать прототип конструктора для добавления свойств или методов ко всем экземплярам, созданным с помощью этого конструктора ***, – jfriend00