-6ren">
gpt4 book ai didi

javascript - Console.log(responseObject) 输出无法通过对象引用的隐藏数据,这正是我拼命想要做的

转载 作者:行者123 更新时间:2023-12-03 01:20:28 28 4
gpt4 key购买 nike

我正在尝试检测与网站的 SSL 握手何时失败。现在,我有一个如下所示的响应对象:

let r = request({url:"url", method: "HEAD", ...}, (res) => { console.log(res) })

这会输出以下日志:

{ Error: write EPROTO 139898579974016:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1494:SSL alert number 40
139898579974016:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:659:
at exports._errnoException (util.js:1020:11)
at WriteWrap.afterWrite (net.js:800:14) code: 'EPROTO', errno: 'EPROTO', syscall: 'write' }

看起来很简单吧?只需从响应对象中检索消息即可。但是,当我在响应对象中查找键时,找不到该消息。

console.log(Object.keys(res)) // [ 'code', 'errno', 'syscall' ]
r.on("error") {console.log(error)} // {code: 'EPROTO', errno: 'EPROTO', syscall: 'write' }

那么如何检索记录的其余内容?

我正在使用 New Relic Synthetics 查询网站,该网站针对网站运行 Selenium Webdriver 3.50 实例(使用 Node 6.11.2)。我认为这不会有什么不同,因为我们正在讨论的是 console.log() 。它确实限制了我的选择,虽然仅限于 New Relic 批准的 Nodejs 模块,但如果有任何非标准的东西有帮助,我会找到一种方法来测试它。

最佳答案

Error 对象中的主要信息位于其 message 属性中。

如果还有其他属性,它们可能不可枚举,和/或它们可以被继承。 Object.keys 不会显示不可枚举或继承的属性。

要查看不可枚举属性(以及可枚举属性,但不是由符号命名的属性),您可以使用 Object.getOwnPropertyNames 。要查看以符号命名的属性(您可能不需要这些),可以使用 Object.getOwnPropertySymbols 。如果您需要查看继承的,您可以在使用 Object.getPrototypeOf 的循环中使用它。沿着原型(prototype)链向上走。

// Assuming `res` is the starting point, and assuming you don't want properties
// from `Object.prototype` (if it's in the prototype chain)
let allPropertyNames = [];
for (let obj = res; obj && obj !== Object.prototype; obj = Object.getPrototypeOf(obj)) {
allPropertyNames.push(...Object.getOwnPropertyNames(obj));
}

关于javascript - Console.log(responseObject) 输出无法通过对象引用的隐藏数据,这正是我拼命想要做的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790499/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com