如何在打印的时候显示调用函数的行号

 当下有这么一个需求,我要在 dev 环境下打印一些日志,所以我封装了一个函数,是这样的

const isDev = import.meta.env.DEV;

export const log = (message: string) => {
  if (isDev) {
     console.log(message);    
  }
};

但是实际使用中发现,虽然打印是没问题的,但是显示的行号却总是这个文件里的行号,导致我没法定位打印的位置。

后边发现,当库里边 throw 一个 Error 的时候,显示的行号并不是库的行,而是实际函数报错的位置 ,所以对 log 函数做一个简单的修改,让他可以打印日志,并且能显示调用的行号

const isDev = import.meta.env.DEV;

export const log = (message: string) => {
  if (isDev) {
    var error = new Error(message);
    try {
      throw error;
    } catch (error) {
      const _error = error as Error;
      _error.name = "Debugger";
      var lines = (_error.stack ?? "").split('\n');
      _error.stack = [lines[0], lines[2]].join("\r\n");
      console.log(_error);
    }
  }
};

 非常好用,nice

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值