【发布时间】:2016-06-21 19:22:03
【问题描述】:
Mongoose 会针对转换错误发出堆栈跟踪。我知道如何防止 Mongoose 错误 - 请不要回答如何防止错误。
如何阻止 Mongoose 在生产环境中发出堆栈跟踪错误?
错误:传入的参数必须是 12 字节的单个字符串或 新 ObjectID 处的 24 个十六进制字符的字符串 (c:\proj\fboapp\node_modules\mongoose\node_modules\bson\lib\bson\objectid.js:38:11) 在 c:\proj\fboapp\routes\user\no_auth_user_api_routes.js:135:27 在 Layer.handle [as handle_request] (c:\proj\fboapp\node_modules\express\lib\router\layer.js:95:5) 在 下一个(c:\proj\fboapp\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (c:\proj\fboapp\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (c:\proj\fboapp\node_modules\express\lib\router\layer.js:95:5) 在 c:\proj\fboapp\node_modules\express\lib\router\index.js:277:22 在 Function.process_params (c:\proj\fboapp\node_modules\express\lib\router\index.js:330:12) 在 下一个(c:\proj\fboapp\node_modules\express\lib\router\index.js:271:10) 在 Function.handle (c:\proj\fboapp\node_modules\express\lib\router\index.js:176:3) 在 路由器(c:\proj\fboapp\node_modules\express\lib\router\index.js:46:12) 在 Layer.handle [as handle_request] (c:\proj\fboapp\node_modules\express\lib\router\layer.js:95:5) 在 修剪前缀 (c:\proj\fboapp\node_modules\express\lib\router\index.js:312:13) 在 c:\proj\fboapp\node_modules\express\lib\router\index.js:280:7 at Function.process_params (c:\proj\fboapp\node_modules\express\lib\router\index.js:330:12) 在 下一个(c:\proj\fboapp\node_modules\express\lib\router\index.js:271:10)
Nodejs v0.12.3 猫鼬 v4.4.3
【问题讨论】:
-
你真的想这样做吗?这是您的应用程序中的错误,应该修复。但是,如果您仍然想要 - 为该错误类型创建事件并处理它...
-
为了安全起见,我想防止在生产中向浏览器 api 发出错误。该错误已修复 - 我只是粘贴了错误代码来演示堆栈跟踪。
-
哦,这实际上是猫鼬中的
throw声明。所以,没有办法“隐藏”它,除了使用try ... catch,据我所知。 -
顺便说一句,你用的是快递吗?就是这样,express可以很好地处理错误
-
这是一个模块,github.com/Faleij/mongoose-disable-stack-trace,你可以试试。