花时间学习C等语言的JavaScript开发人员往往无法使用某些类型的自省,比如记录行号,以及当前方法的调用方法.如果您使用的是V8(Chrome,Node.js),那么您可以采用以下方法.

推荐答案

Object.defineProperty(global, '__stack', {
  get: function(){
    var orig = Error.prepareStackTrace;
    Error.prepareStackTrace = function(_, stack){ return stack; };
    var err = new Error;
    Error.captureStackTrace(err, arguments.callee);
    var stack = err.stack;
    Error.prepareStackTrace = orig;
    return stack;
  }
});

Object.defineProperty(global, '__line', {
  get: function(){
    return __stack[1].getLineNumber();
  }
});

console.log(__line);

以上将记录19.

再加上arguments.callee.caller,你可以更接近你在C中通过宏获得的有用日志(log)类型.

Node.js相关问答推荐

在child_Process中持久运行SSH命令

Node.js中Redis的并发问题

SvelteKit应用程序立即退出,没有错误

运行本地移动自动化测试时,在onPrepare钩子中,ERROR @wdio/cli:utils: A service failed in the 'onPrepare'

Amplify 部署的应用程序出现TypeError: handler is not a function错误,但它在本地运行

Fly.io 启动问题:无法从源获取图像或构建错误:构建错误:连接期间出错:发布...

BrowserRouter 无法渲染组件

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

错误:找不到模块'C:\Users\nguye\AppData\Local\nodejs\node_modules\npm\bin\npm-cli.js'

无法更新MongoDB中的文档:";伯森场';writeConcern.w';是错误的类型';数组'&引用;

node.js 中 res.setHeader 和 res.header 的区别

`npm install` 以Killed结尾

这到底是什么';拒绝未经授权';对我来说是什么意思?

如何使用 mocha.js 模拟用于单元测试的依赖类?

在 Node.js 中的两个不同进程之间进行通信

PhoneGap/Cordova Android 开发

Passport 的 req.isAuthenticated 总是返回 false,即使我硬编码 done(null, true)

如何从 Node.js 中的 URL 获取

要求('babel/register')不起作用

如何断言不为空?