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); }); }
- 在将路由拆分成不同的文件/模块时,得到“ForbiddenError:无效的csrf令牌”
- findOneAndRemove和findOneAndUpdate不能按预期工作
- node.js和express – 使用多个中间件与callback – 最佳实践是什么?
- 如何使用callback来等待两个查询asynchronous节点
- Node.js / jade – 我如何将mysql数据作为本地variables传递给内联javascript?
- Angularjs不提交数据
- Node.js:TypeError:Object socket.io没有方法'listen'
- 想知道使用基于快速渲染variables的把手部分的最佳方法
- 让ExpressJS为映射path返回404