GET请求访问数据库时服务器日志报Result is not Defined错误如何解决
问题排查:数据库GET请求报「Result is not Defined "Error"」
- 你当前贴出的路由代码中没有使用名为
Result的变量,所以该报错不是来自这段代码的显性逻辑,优先排查三个关联位置:- 鉴权中间件
rejectUnauthenticated的内部实现:如果该中间件中使用了未定义的Result变量,请求在进入路由处理逻辑前就会抛出错误。你可以在路由第一行的console.log('Ticket Info GET')前新增一条测试日志,若请求触发报错时该日志未打印,即可确认是中间件的问题。 - 数据库连接池
pool的封装代码、全局异常捕获逻辑:如果你的服务配置了全局的未处理promise异常捕获,或者pool的自定义封装代码中用到了Result变量,当数据库查询触发异常时就会触发该报错。 - 代码修改后的拼写错误:如果你后续放开了注释中的
sqlParams相关逻辑,或者修改返回代码时把dbResponse错写为Result,比如出现res.send(Result.rows)这类写法,也会触发变量未定义报错。
- 鉴权中间件
- 快速定位技巧:把catch块中的日志代码修改为
console.error('ERROR: Get all tickets', err.stack),打印完整的错误堆栈信息,可以直接定位到报错的具体文件和行数。 - 现有代码优化提示:当前catch块的日志内容写的是「Get all videos」,和当前查询工单的业务逻辑不符,排查问题时容易混淆错误来源,建议修改为对应业务的日志标识。
内容的提问来源于stack exchange,提问作者MWerneke
相关产品推荐
相关产品推荐

