gpt4 book ai didi

c++ - Node 12 (v8) - 将不推荐使用的代码转换为 "maybe"版本

转载 作者:行者123 更新时间:2023-11-28 04:08:59 25 4
gpt4 key购买 nike

我决定将 Node 更新到 12.11。因此,我在使用的某些 Node 模块中遇到 gyp 编译错误。我对 C++ 有一些经验,但我从未使用过 v8。我已经设法修复了与以前弃用和现在删除的函数相关的大多数错误,但有一种问题我无法解决:

v8::Local<v8::Object> obj = size->ToObject();
if(obj->Has(columns))
w->ws_col = obj->Get(columns)->Uint32Value();
if(obj->Has(rows))
w->ws_row = obj->Get(rows)->Uint32Value();

ToObject()已被删除,所以我想出了这个:

v8::Local<v8::Object> obj = Nan::To<v8::Object>(size).ToLocalChecked();

问题是没有 v8::Object::Has(v8::Local<v8::String>&)方法。我怎样才能制作 Has调用兼容新版本?

最佳答案

ToObject() 的未弃用替代品是MaybeLocal<Object> v8::Value::ToObject(Local<Context> context) ;使用 Nan当然可以,但不是必需的。注意 .ToLocalChecked如果抛出异常并且没有结果值,将触发崩溃,这可能发生,例如如果你在 null 上调用这个函数或 undefined .结果类型 MaybeLocal旨在明确嵌入程序代码需要对此进行检查,并酌情处理异常。

同样,Has() 的非弃用版本是采用上下文参数的两个:Maybe<bool> v8::Object::Has(Local<Context> context, Local<Value> key)Maybe<bool> v8::Object::Has(Local<Context> context, uint32_t index) . Maybe<bool>如果抛出异常,它们返回什么都没有(.IsNothing() == true),否则它是一个bool。结果。

关于c++ - Node 12 (v8) - 将不推荐使用的代码转换为 "maybe"版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58219928/

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