这是我的承诺:
.then(function(response) {
if (response.type === 'error') {
console.log("will throw error", response);
throw Error(response);
}
return extractResponseCallback(response);
})
.catch(function(error) {
console.log("catching error", error);
return error;
});
在console.log
之前执行的throw Error(response);
显示了以下信息:
will throw error
{
cmd: 'has_active_project',
errorcode: 'Invalid command',
type: 'error'
}
但是catch方法中的console.log("catching error", error)
显示了
catching error Error: [object Object]
at /....js:18:19
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
此外,使用console.log(JSON.stringify(“ catching error”,error))仅显示:
catching error {}
答案 0 :(得分:2)
我相信您正在搜索console.dir()
,它显示了传递对象的所有属性,并且您看到具有交互属性和值的普通对象,而不是无用的[object Object]
输出。
来自文档:
显示指定属性的交互式列表 JavaScript对象。输出显示为分层列表 带有显示三角形的显示三角形,可让您看到孩子的内容 对象。
换句话说,console.dir是查看服务器所有属性的方法。 控制台中指定的JavaScript对象,开发人员可以通过该对象 轻松获取对象的属性。
如果您确实需要记录所有这些信息,请按照这种方式进行。请注意,当您要查看错误对象的特定字段时,可以像error.message
一样登录,对于大多数情况就足够了。
答案 1 :(得分:1)
Error
构造函数的参数为string
,并在结果错误对象上产生message属性。如果您知道自定义错误将是一个对象,则可以尝试以下操作:
throw new Error(JSON.stringify(response))
然后您可以使用
在捕获处理程序中访问该消息error.message
甚至
JSON.parse(error.message)
如果出于某种原因需要与各个属性进行交互。