千家信息网

怎么编写nodejs c++插件

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"怎么编写nodejs c++插件",在日常操作中,相信很多人在怎么编写nodejs c++插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么编写n
千家信息网最后更新 2026年11月01日怎么编写nodejs c++插件

这篇文章主要介绍"怎么编写nodejs c++插件",在日常操作中,相信很多人在怎么编写nodejs c++插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么编写nodejs c++插件"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

环境

1 ubuntu18.04。
2 安装nodejs v12和npm install node-gyp -g。

写代码

写一个测试的例子。test.cc

// hello.cc using N-API
#include

namespace demo {

napi_value Method(napi_env env, napi_callback_info args) {
napi_value greeting;
napi_status status;

status = napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &greeting);
if (status != napi_ok) return nullptr;
return greeting;
}

napi_value init(napi_env env, napi_value exports) {
napi_status status;
napi_value fn;

status = napi_create_function(env, nullptr, 0, Method, nullptr, &fn);
if (status != napi_ok) return nullptr;

status = napi_set_named_property(env, exports, "hello", fn);
if (status != napi_ok) return nullptr;
return exports;
}

NAPI_MODULE(NODE_GYP_MODULE_NAME, init)

} // namespace demo

binding.gyp

{
"targets": [
{
"target_name": "test",
"sources": [ "./test.cc" ]
}
]
}

然后执行npm init。内容如下

{
"name": "test-addons",
"version": "1.0.1",
"description": "",
"main": "./build/Release/test.node",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"install": "node-gyp rebuild"
},
"author": "",
"license": "ISC",
"gypfile": true
}

我们主要看和插件相关的两个配置

"main": "./build/Release/test.node",
"gypfile": true

main定义了插件的入口,因为我们没有为用户提供js的api。而是直接提供.node文件,所以这里定义的路径为插件的路径。gypfile标记这个包是一个c++插件,用户在使用npm安装这个包的时候,就会执行node-gyp rebuild,针对用户系统环境,生成对应的二进制代码。有些文章介绍了需要在scripts的值里加入"install": "node-gyp rebuild",npm文档说了如果包下面有.gyp文件的话,默认就会执行这个rebuild操作。

"scripts":{"install": "node-gyp rebuild"}
If there is a binding.gyp file in the root of your package and you have not defined an install or preinstall script, npm will default the install command to compile using node-gyp.

一切准备就绪,我们可以执行npm publish发布了(记得先登录npm)。

测试

我们首先安装这个包。npm install test-addons --unsafe-perm,然后写代码测试一下。

var addon = require("test-addons/build/Release/test");
console.log(addon.hello());

我们发现,这样显然很麻烦。所以我们最好还是在包里为用户提供js模块的接口。我们在包里增加index.js

var addon = require("./build/Release/test");
module.exports = addon;

修改测试代码

var addon = require("test-addons");
console.log(addon.hello());

到此,关于"怎么编写nodejs c++插件"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

插件 c++ 代码 用户 学习 测试 文件 文章 更多 环境 路径 帮助 实用 接下来 两个 二进制 例子 入口 内容 接口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 广州为想互联网科技有限公司 重庆互联网络科技 北京互联网科技 唐信互联网科技 深圳艾佳互联网科技 互联网科技宣传片 成都狮子座互联网科技 镁科技互联网资讯平台 科技伦理 互联网公司 海南科技产业互联网平台 成都玖崟互联网科技有限公司乐商圈怎么样 互联网为啥属于高科技 昊天互联网科技有限公司 互联网科技大奖都有哪些公司 卓翼科技产业互联网合作 梅州GM互联网络科技有限公司 南京一网一红互联网科技有限公司 银川新华互联网科技学校是国营吗 兰石爱特工业互联网科技分公司 互联网金融监管科技数据 蓝色互联网科技 北京大学互联网科技怎么样 互联网科技实习生岗位职责 链环科技传统企业怎么转型互联网 互联网时代科技型公司的机会 互联网科技机房 安徽零酒互联网科技有限公司 陕西彩京云互联网科技有限公司 科技美学互联网 艺术
0