JavaScript错误没有显示在控制台中?

在下面的代码中, fields是未定义的,但是在发生错误时它不会logging到控制台。 在这个具体的例子中,为什么,以及事实上的处理方式是什么?

"Testing"被logging到控制台(2号线),但未定义的variablesfields (4号线)未被报告。 错误在API响应(第5行)中返回,但没有相关信息,如行号,堆栈跟踪等。

我怎样才能使这个日志到控制台的错误,为什么他们不是?

 export function post(req, res) { console.log("Testing") User.create( getFields(req, ["name_first", "name_last"]) ) .then(user => respondJSON (res, fields, { status: 201 })) .catch(err => respondError (res, err)) } 

由于catch正在响应一个错误,我得到以下的API响应:

 { "error": true, "data": { "message": "fields is not defined" } } 

我使用Babel 6和babel-node通过NPM脚本运行我的代码。 我也使用摩根logging。 删除用于logging的中间件不会改变错误输出。

自动logging到控制台是一个未处理exception的机制。 因为Promises自动在callback中捕获exception,所以exception不再被处理,所以没有任何东西会被自动logging。

如果你想把它logging下来,你也许可以在catch块的末尾添加一个throw err 。 这会将其转换为未处理的承诺拒绝,这通常与未处理的exception处理类似。

因为你没有真正logging错误?

 export function post(req, res) { console.log("Testing") User.create( getFields(req, ["name_first", "name_last"]) ) .then(user => respondJSON (res, fields, { status: 201 })) .catch(err => { console.error(err); respondError(res, err); }); }