【问题标题】:Display undefined variable name not just undefined node显示未定义的变量名而不仅仅是未定义的节点
【发布时间】:2017-01-17 20:41:06
【问题描述】:

我意识到这是一个有点愚蠢的问题,但我想知道是否有一种方法可以显示定义的变量的实际名称而不仅仅是

 Unhandled rejection TypeError: Cannot read property '0' of undefined
      at Object.gamesExport.addGame (/var/www/football.co.uk/app/api/api.Games.js:104:88)

在这种特殊情况下,我正在报废数据,并且很难/无聊地找出丢失的数据。我知道它也给了我台词和字符,所以我可以这样查找,但我很懒...

我知道萤火虫有这个功能:

所以节点也必须是可能的

我正在使用节点 6.3.0

【问题讨论】:

  • 无法打开文本编辑器,输入行号然后阅读?你可以在问这个荒谬的问题的时间内完成 20 次。您应该更清楚自己获得的分数。
  • 没有 cmets 但投反对票?小伙伴们的一点反馈
  • 正如我所说的 Archer...我可以,但我不想。
  • 这不会被回答。
  • 所以我们应该*GUESS第104行发生了什么?我们很好,但没有那么好。我们的魔法水晶球都在店里服务,所以我们无法读懂你的想法。

标签: javascript node.js error-handling


【解决方案1】:

通过使用stack-trace,您可以快速从堆栈中获取行和文件,然后将它们输入readline。它很草率,但我认为它可以解决您的问题。

var stackTrace = require('stack-trace');
var fs = require('fs');
var readline = require('readline');

try{
   var x = 1;
   x = 1+y; //Error Y not defined
}catch (err){
   var count = 0;
   var trace = stackTrace.parse(err)
   var eFile = trace[0].fileName
   var eLine = trace[0].lineNumber

   var rl = readline.createInterface({
      input: fs.createReadStream(eFile)
   });

   rl.on('line', function(line) {
      count++
      if (count === eLine) {
        console.log("Error: "+line)
      }
   });

}

【讨论】:

  • 感谢 woodsy 这样做 :) 所以我只需要在我的 express 应用程序中将其设为全局,然后所有错误都会被捕获,它会让我知道行号。我会研究这两种方式以了解更多信息。
猜你喜欢
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多