node.js通过Error.prepareStackTrace获取上层调用函数的文件名地址和行数位置


发布者 ourjs  发布时间 1587526318956
关键字 Node.JS  JavaScript 

node.js中可以通过 __dirname 获取当前文件的目录。

那么如何在被调用函数中获取调用者的文件地址和函数名以及行数位置?

可使用Error.prepareStackTrace来获取StackTrace数组对象,获取调用者文件信息。

var getCallerPath = function() {
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function(_, stack) { return stack; };
var err = new Error;
var stack = err.stack;
Error.prepareStackTrace = orig;

// stack[0]为当前函数, stack[1]为调用者,stack[2]为上层调用者
return stack[2].getFileName()
}


使用方法,直接调用该函数,即可获取上层函数信息

 

 var callerPath = getCallerPath()

 

StackTrace还有其它方法,可以获取调用者行数、位置信息等:

getPosition
getFunction
getFunctionName
getFileName
getLineNumber

 

 

 









 热门文章 - 分享最多
  1. webpack前端项目调试环境安装入门:webpack.config.js禁用UglifyJs只合并JavaScript不压缩混淆代码
  2. node.js创建aria2代理服务器:使用net.socket转发rpc或http request请求,替换websocket
  3. request停止维护:用node.js实现http网页爬虫抓取,模拟ajax\post请求,大文件上传下载
  4. JavaScript判断字符串是否为数字类型:Number.isInteger、isNaN、正则表达式比较
  5. 用node.js在Windows或Linux平台上高性能解压/压缩zip、tar大文件,输出到文件或Stream流
  6. OnceDB:使用Redis全文字符串模糊搜索,多条件查询,创建索引搜索等使用帮助教程
  7. 用CSS实现分页符,控制Web网页打印时自动强制分页:page-break-after教程
  8. SVG矢量图视窗viewBox,嵌套HTML综合实例:建立用户自定义相对坐标系统
  9. 怎么通过OnceOA免费实现外网访问家庭、企业内网服务器网站、网盘、办公系统
  10. Node.JS中回调嵌套和async/await执行空函数性能效率对比测试

 相关阅读
  1. Node.JS如何按顺序调用async函数,如何判断是否为async函数,在mocha中自动化测试async/await代码
  2. node.js将回调函数嵌套,用promise改造成async/await顺序执行:异常处理和返回多个参数
  3. 基于Node.JS和Electron编写的集成开发环境 VS Code,成为最受欢迎的IDE
  4. 使用node.js和oAuth2协议集成Github/LinkedIn第三方登录以OnceOA模块源码为例
  5. Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
  6. Node.JS的竞争对手?QuickJS入门教程,使用os模块读写文件,并将JavaScript编绎成可执行文件
  7. Node.JS用RSA签名算法公钥加密私钥解密,实现License软件授权验证
  8. Node.JS借助OS模块获取当前Windows系统用户登录名
  9. Node.JS在命令行中检查Chrome浏览器是否安装,并打开指定网址
  10. node.js中将console.log日志内容输出到文件

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA