[英]nodejs napi module did not self register
當我嘗試測試 nodejs N-API 模塊時,我遇到了一個錯誤:
我的 addon.c 文件是:
#include <node_api.h>
napi_value HelloMethod (napi_env env, napi_callback_info info) {
napi_value world;
napi_create_string_utf8(env, "world", 5, &world);
return world;
}
void Init (napi_env env, napi_value exports, napi_value module, void* priv) {
napi_property_descriptor desc = { "hello", 0, HelloMethod, 0, 0, 0, napi_default, 0 };
napi_define_properties(env, exports, 1, &desc);
}
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
我的 binding.gyp 文件是:
{
"targets": [
{
"target_name": "addon",
"source": ["addon.c"]
}
]
}
當我使用 require('./build/Release/addon') 調用插件模塊時,錯誤信息是:
Error: Module did not self-register.
at Object.Module._extensions..node (internal/modules/cjs/loader.js:707:18)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
at Module.require (internal/modules/cjs/loader.js:626:17)
at require (internal/modules/cjs/helpers.js:20:18)
有人可以幫助我嗎? 坦克
似乎較新版本的node-addon-api
已更改其用於模塊注冊/導出的 API。 您正在使用的數據類型也將不再起作用。
現在是這樣完成的
#include <napi.h>
Napi::String HelloMethod(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
return Napi::String::New(env, "world");
}
Napi::Object Init(Napi::Env env, Napi::Object exports) {
exports.Set(Napi::String::New(env, "hello"),
Napi::Function::New(env, HelloMethod));
return exports;
}
NODE_API_MODULE(addon, Init)
這適用於節點 11.10.1 和 node-addon-api 1.6.2。
嘗試將文件名“addon.c”更改為“addon.cpp”,然后重建並運行。
請參閱: 成功編譯節點模塊和“模塊未自行注冊”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.