【发布时间】:2017-05-26 11:30:25
【问题描述】:
假设我有:
var err = new Error('My error!');
如何获取行和文件名,Error 是在哪里创建的?
就像在 PHP 中一样:
$ex = new \Exception();
$ex->getLine();
$ex->getFile();
【问题讨论】:
-
err.stack可以为您提供堆栈跟踪。
假设我有:
var err = new Error('My error!');
如何获取行和文件名,Error 是在哪里创建的?
就像在 PHP 中一样:
$ex = new \Exception();
$ex->getLine();
$ex->getFile();
【问题讨论】:
err.stack 可以为您提供堆栈跟踪。
要获取当前文件的文件名:使用__filename。
要获取当前文件的文件夹:使用__dirname
要从Error 对象解析文件,您需要一个带有stack 属性的Error,希望它指向文件。然后,您需要从 stack 字符串中解析文件名和行,或者使用这样做的模块。
> new Error().stack
Error
at repl:1:1
at sigintHandlersWrap (vm.js:22:35)
at sigintHandlersWrap (vm.js:73:12)
at ContextifyScript.Script.runInThisContext (vm.js:21:12)
at REPLServer.defaultEval (repl.js:346:29)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.<anonymous> (repl.js:545:10)
at emitOne (events.js:101:20)
at REPLServer.emit (events.js:188:7)
【讨论】:
您可以使用堆栈跟踪node module。这给出了模块名称和行号
【讨论】: