【发布时间】:2016-03-15 07:58:51
【问题描述】:
我在服务器端有一个文件移动实用程序, 如果目标目录不存在,则返回的错误是(通过网络):
{errno: -2,
code: 'ENOENT',
path: 'uploads/workgroup/message.docx'}
服务器端的一段代码:
fs.rename(oldpath,newpath, function(err) {
if(err) {
err.message = 'Target directory does not exist.';
return res.send(400, err);
}
如您所见,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 文档说你不能修改错误原型:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
@oshnaps - 两件事:1)OP 没有修改错误原型。他们只是向现有对象添加“自己的”属性。 2) 我在 MDN 上读到的内容是:您可以使用构造函数的原型向使用该构造函数创建的所有实例添加属性或方法,
标签: json node.js error-handling