node.js 使用NAPI写C++插件,(部分转帖)

原文:https://www.cnblogs.com/chyingp/p/nodejs-learning-napi.html

可能是版本问题,我用node v10.6.0 遇到了问题

不过解决了.

一般情况错误都有提示,按照前面的这个网友的顺序,应该遇到的问题:

这个要修改一下代码了:

原来的代码:

#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;
}

// 扩展的初始化方法,其中 
// env:环境变量
// exports、module:node模块中对外暴露的对象
void Init (napi_env env, napi_value exports, napi_value module, void* priv) {
    // napi_property_descriptor 为结构体,作用是描述扩展暴露的 属性/方法 的描述
    napi_property_descriptor desc = { "hello", 0, HelloMethod, 0, 0, 0, napi_default, 0 };
    napi_define_properties(env, exports, 1, &desc);  // 定义暴露的方法
}

NAPI_MODULE(hello, Init);  // 注册扩展,扩展名叫做hello,Init为扩展的初始化方法

改成的新代码:

#include <node_api.h>

// 实际暴露的方法,这里只是简单返回一个字符串
napi_value HelloMethod (napi_env env, napi_callback_info info) {
    napi_value world;
    napi_create_string_utf8(env, "maomingchao", 11, &world);
    return world;
}

// 扩展的初始化方法,其中 
// env:环境变量
// exports、module:node模块中对外暴露的对象
napi_value Init (napi_env env, napi_value exports) {// <=这里做了修改
    // napi_property_descriptor 为结构体,作用是描述扩展暴露的 属性/方法 的描述
    napi_property_descriptor desc = { "hello", 0, HelloMethod, 0, 0, 0, napi_default, 0 };
    napi_define_properties(env, exports, 1, &desc);  // 定义暴露的方法
    return exports;
}

NAPI_MODULE(hello, Init)  // 注册扩展,扩展名叫做hello,Init为扩展的初始化方法

每次修改完C++代码,需要重新 node-gyp rebuild

猜你喜欢

转载自www.cnblogs.com/maomingchao/p/9365129.html