gpt4 book ai didi

javascript - 如何消除 "' NewInstance' is deprecated"warning in `node-gyp rebuild`?v8 中 NewInstance 的替代方案是什么?

转载 作者:行者123 更新时间:2023-11-30 08:26:08 27 4
gpt4 key购买 nike

你好 V8 程序员和 node-gyp'ers。我正在运行 OS X 10.12.6Node v6.11.1npm v3.10.10nan v2.6.2gcc 作为 XCode 的一部分,具有此版本输出:

$ > gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix

请帮助我了解如何在自定义包安装的 npm installnode-gyp rebuild 过程中正确使用 NewInstance 并消除警告?

> node-gyp rebuild

CXX(target) Release/obj.target/cellcrypt/src/cellcrypt.o
CC(target) Release/obj.target/cellcrypt/src/decode.o
CXX(target) Release/obj.target/cellcrypt/src/DecryptionWrapper.o
../src/DecryptionWrapper.cpp:55:44: warning: 'NewInstance' is deprecated [-Wdeprecated-declarations]
v8::Local<v8::Object> instance = cons->NewInstance();
^
/Users/sjcbsolo/.node-gyp/6.11.1/include/node/v8.h:3276:52: note: 'NewInstance' has been explicitly marked deprecated here
V8_DEPRECATED("Use maybe version", Local<Object> NewInstance() const);
^
1 warning generated.
CC(target) Release/obj.target/cellcrypt/src/Encryption.o
SOLINK_MODULE(target) Release/cellcrypt.node
clang: warning: libstdc++ is deprecated; move to libc++ with a minimum deployment target of OS X 10.9 [-Wdeprecated]

如果不需要,我不想看到这些警告。我在 github 上找到了一张公开票通过要求调用 NewInstance 的方式来详细说明对另一个插件包的修复:

info.GetReturnValue().Set(cons->NewInstance(argc, argv));
info.GetReturnValue().Set(Nan::NewInstance(cons, argc, argv).ToLocalChecked());

实现 Nan::NewInstance() 而不会过多影响速度和效率的最佳方法是什么?

最佳答案

错误消息本身为您提供了答案的简短形式:“可能使用版本”。它试图告诉您有一个重载版本的 NewInstance 返回一个 MaybeLocal(而不是一个 Local),这就是您应该做的使用。

背景是大多数操作都可能失败,通常是在抛出异常时。旧的 V8 API 使嵌入者相对难以确定他们在所有相关位置检查异常;因此引入了一个基于 MaybeLocal 返回类型的新 API。每当你得到一个 MaybeLocal 时,你应该检查它是否真的包含一个值。如果您只是使用 .ToLocalChecked(无需首先手动检查),这意味着您愿意在出现故障时简单地崩溃(如果您可以保证不会出现任何故障,这很好)。从好的方面来说,这并不比您的代码显然一直在做的事情更糟 ;-)

关于javascript - 如何消除 "' NewInstance' is deprecated"warning in `node-gyp rebuild`?v8 中 NewInstance 的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388032/

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