在跟踪堆栈/错误对象中获取行号的文件名

时间:2017-12-24 19:57:00

标签: javascript node.js express error-handling

我正在改进Node.js / express中的错误处理。

有没有办法获取我的代码中发生此错误的文件名和行号?

target_link_libraries(wx_widgets_hello_world ${wxWidgets_LIBRARIES}) ,使用error-handler.js,只是处理错误的路径......而不是错误实际发生的位置。

console.trace
class FacebookErr extends Error {
  constructor(httpCode, ...args) {
    super(...args)
    Error.captureStackTrace(this, FacebookErr);
    this.name = 'FacebookErr';
    this.date = new Date();
    this.httpCode = httpCode;
  }
}
  fetch(uri)
    .then(status)
    .then(toJson)
    .then(getUserInfo)
    .catch((err) => {
      next(new FacebookErr(500, err));
    });

1 个答案:

答案 0 :(得分:1)

使用正则表达式...以下内容将为您提供堆栈跟踪中第一个文件的文件名(完整路径),行号和列号:

const [, filename, line, column ] = err.stack.match(/\/([\/\w-_\.]+\.js):(\d*):(\d*)/)

如果您想获取项目中第一个文件的信息,而不是node_modules中的信息:

const regEx =  = new RegExp(`${process.cwd()}\\/(?!node_modules\\/)([\\/\\w-_\\.]+\\.js):(\\d*):(\\d*)`)
const [, filename, line, column ] = err.stack.match(regEx)