请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

当开发环境为dev, 在id时非正整数的时候,不能正确显示错误信息,终端显示Error 在 lin-validator.js:87:19

正在回答 回答被采纳积分+3

3回答

提问者 猴犀利的7号 2019-07-04 00:00:21
const isHttpException = error instanceof HttpException
const isDev = global.config.environment === 'dev'

if(isDev && !isHttpException){
throw error
}

看来源码,是否结合这样判断 就可以解决bug??

1 回复 有任何疑惑可以回复我~
  • 我也遇到了,和你同样的问题,谢谢
    回复 有任何疑惑可以回复我~ 2020-04-07 19:55:51
提问者 猴犀利的7号 2019-07-04 22:02:19
// exception.js
const catchError = async (ctx,next) => {
try {
await next()
} catch(error) {
if(global.config.environment === 'dev'){
throw error  
}
if(isHttpException){
ctx.body = {
msg: error.msg,
error_code: error.errorCode,
request_url: `${ctx.method} ${ctx.path}`,
}
ctx.status = error.code
}else {
ctx.body = {
msg: '未知错误',
error_code: 999,
request_url: `${ctx.method} ${ctx.path}`,
}
ctx.status = 500
}
}
}
// lin-validator.js
validate(ctx, alias = {}) {
this.alias = alias
let params = this._assembleAllParams(ctx)
this.data = cloneDeep(params)
this.parsed = cloneDeep(params)

const memberKeys = findMembers(this, {
filter: this._findMembersFilter.bind(this)
})

const errorMsgs = []
// const map = new Map(memberKeys)
for (let key of memberKeys) {
const result = this._check(key, alias)
if (!result.success) {
errorMsgs.push(result.msg)
}
}
if (errorMsgs.length != 0) {
throw new ParameterException(errorMsgs)  // 这里会触发error
}
ctx.v = this
return this
}


0 回复 有任何疑惑可以回复我~
7七月 2019-07-04 04:51:40

麻烦帖一下代码,Lin-Validator和dev还是prod有什么关系呢?不太明白

0 回复 有任何疑惑可以回复我~
  • 提问者 猴犀利的7号 #1
    代码如上~~需要按下面这样多加判断条件才会返回需要的错误信息到前端
    回复 有任何疑惑可以回复我~ 2019-07-04 22:03:35
  • 7七月 回复 提问者 猴犀利的7号 #2
    多加了哪段代码?
    回复 有任何疑惑可以回复我~ 2019-07-05 01:01:50
  • 提问者 猴犀利的7号 回复 7七月 #3
    这个错误其实在5-9节的16分钟左右有出现过,看完后5-9节后就解决了
    回复 有任何疑惑可以回复我~ 2019-07-07 22:16:18
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信