我正在尝试编译并使用N-API节点JS C 插件。该代码可以恢复正常,但是在运行时我会收到以下错误:
module.js:664
return process.dlopen(module, path._makeLong(filename));
^
Error: Module did not self-register.
at Object.Module._extensions..node (module.js:664:18)
at Module.load (module.js:554:32)
at tryModuleLoad (module.js:497:12)
at Function.Module._load (module.js:489:3)
at Module.require (module.js:579:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/Users/johngorter/Desktop/WASM/index2.js:1:77)
at Module._compile (module.js:635:30)
at Object.Module._extensions..js (module.js:646:10)
at Module.load (module.js:554:32)
奇怪的是,当我用"正常" C 插件代码(无N-API)替换CC代码时,一切正常。
我正在使用Nodejs 8.9.2。
有人有线索吗?
tia,约翰。
您缺少一些看起来像这样的代码,这些代码需要注册您在Javsscript中提供的功能。
Napi::Object Init( Napi::Env env, Napi::Object exports )
{
exports.Set(
Napi::String::New( env, "someFunctionName"),
Napi::Function::New( env, someFunctionName)
);
exports.Set(
Napi::String::New( env, "someOtherFunctionName"),
Napi::Function::New( env, someOtherFunctionName)
);
return exports;
}
NODE_API_MODULE( yourModuleName, Init );