我用本机代码创建了一个节点模块。我使用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
显示v8::String::Utf8Value::Utf8Value
。
我不知道我想念什么,所以如果有人知道我发生了什么事,那真是太好了。
您可以在Github上查看代码,尤其是最后一次提交here
信息:
-该模块仅Windows
-我使用了Node 12,并尝试将其升级到13
-构建模块时,node-gyp版本为5.0.5,通过electron-rebuild
答案 0 :(得分:1)
您要构建的Electron版本是什么?古代V8版本没有Utf8Value
的两个参数版本,但是自6.2分支(2017年夏季)以来,它就已经存在。因此,如果您的基于Electron的应用程序很旧,则可以对其进行解释,并对其进行更新就可以修复它。