我需要一些幫助來解決我的問題。 基本上,我想從C++插件中「調用」javascript函數,我已經使用了它並發現了類似這樣的內容。從C++插件調用JavaScript函數
這裏是我的js文件
const myaddon = process.binding('myaddon');
function Foo() {
console.log("wooo");
}
myaddon.getfoo(Foo);
myaddon.callfoo(); // just to test if C++ Call js function work
這裏是我的.cpp
Local<Function> pfOnScriptInit;
Local<Object> globel;
void test(const FunctionCallbackInfo<Value>& args)
{
pfOnScriptInit = Local<Function>::Cast(args[0]);
}
void call(const FunctionCallbackInfo<Value>& args)
{
pfOnScriptInit->Call(globel, 0, nullptr);
}
void initAll(Local<Object> target, Local<Value> unused, Local<Context> context, void* priv)
{
node::Environment* env = node::Environment::GetCurrent(context);
globel = env->context()->Global();
env->SetMethod(target, "getfoo", test);
env->SetMethod(target, "callfoo", call);
}
NODE_MODULE_CONTEXT_AWARE_BUILTIN(fivemp, node::fivemp::initAll)
調用myaddon.callfoo();
功能,當我得到這個錯誤:
TypeError: Illegal Invocation