Utf8Value error C2661: 没有重载函数接受 2 个参数

Utf8Value error C2661: No overloaded function takes 2 arguments

我创建了一个带有本机代码的节点模块。我使用 v8::String::Utf8Value::Utf8Value,在 documentation 中写着它需要两个参数。

所以我用

Isolate * isolate = info.GetIsolate();
Local<Context> context = isolate->GetCurrentContext();
Local<Array> array = Local<Array>::Cast(info[0]);
MaybeLocal<Value> maybeIndex = array->Get(context, 0);
Local<Value> index = maybeIndex.ToLocalChecked();

// This is the important line
String::Utf8Value path(isolate, index);

当我开发模块时,没问题,npm install 构建它,travis 也是如此。

但是当我想在应用程序(电子)中使用这个模块时,当我 运行 .\node_modules\.bin\electron-rebuild.cmd 构建我的模块时,它失败并显示 error C2661: No overloaded function takes 2 arguments for v8::String::Utf8Value::Utf8Value.

我不知道我错过了什么,所以如果有人知道我发生了什么事就太好了。

您可以在 Github 上看到代码,特别是最后一次提交 here

信息: - 该模块仅 Windows - 我使用的是 Node 12,并尝试将其升级到 13,没有任何变化 - node-gyp 在构建我的模块时是 5.0.5 版,在通过 electron-rebuild

构建时是 6.0.1 版

您要构建的 Electron 版本是什么?古代 V8 版本没有 Utf8Value 的双参数版本,但自从 6.2 分支(2017 年夏季)以来它就存在了。因此,如果您的基于 Electron 的应用程序非常旧,那么这将解释它并更新它应该修复它。