问题标签 [node.js-napi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
868 浏览

node.js-addon - 将旧插件迁移到 NAPI

我是 Node.js 插件的新手,我不明白 和 之间的nan区别n-api

是否有一种简单的方法可以将旧版本(节点 v.0)的插件迁移到新版本(节点 v.8)?

0 投票
1 回答
315 浏览

node.js - 如何从N-api异步调用引用函数,我无法获取“env”!

js代码是:

记住 C++ 中的函数:

当调用本机函数时:

0 投票
1 回答
754 浏览

c++ - NodeJS 和 N-API

我正在尝试编译和使用 N-API Node JS c++ 插件。代码编译得很好,但在运行时出现以下错误:

奇怪的是,当我用“普通”C++ 插件代码(没有 N-API)替换 cc 代码时,一切正常。

我正在使用 NodeJS 8.9.2。

有人有线索吗?

TIA,约翰。

0 投票
2 回答
1954 浏览

c++ - 将 OpenCV C++ 附加组件添加到 node.js 的最基本示例

所以最近我一直在使用 C++ 进入 OpenCV。我已经建立了一些我想导出到 Nodejs 的库和应用程序,但我一生都无法弄清楚。

我试图在下面的这个 repo 中查看他是如何做到的,但有很多东西需要吸收,特别是因为这是我的第一个附加组件。 https://github.com/peterbraden/node-opencv/blob/master/binding.gyp

我不介意它与 NAN 或 N-API 一起使用,我只是希望有一些简单易懂的东西,以了解什么去哪里以及为什么。

这是一个简单的 OpenCV 函数,它只打开一个我试图用作 Node 插件的图像:

0 投票
2 回答
895 浏览

node.js - nodejs napi 模块没有自行注册

当我尝试测试 nodejs N-API 模块时,对我有一个错误:
我的 addon.c 文件是:

我的 binding.gyp 文件是:

当我使用 require('./build/Release/addon') 调用插件模块时,错误信息是:

有人可以帮助我吗?坦克

0 投票
1 回答
1059 浏览

c++ - 在 Node.js C++ N-API 中迭代 Napi::Object 属性(键)

我在使用 c++ n-api api 时遇到问题,我已经查看了此处的文档,但我没有看到一种方法来迭代 a 的键Napi::Object。我一定遗漏了一些东西,因为这在 JavaScript 中是可能的,所以在 C++ API 中一定是可能的。

如何列出或迭代 Napi::Object 中的键(属性)。

0 投票
1 回答
1521 浏览

javascript - 从 C++ 回调函数发出 Node.js 事件

在 Node.js 应用程序中,我需要在更改默认音频设备时收到通知。该程序将在 Windows 7 上使用。

目前,我正在尝试通过为节点制作一个 C++ 插件来做到这一点,该插件通过 Windows Core Audio API 中的 IMMNotificationClient::OnDefaultDeviceChanged 方法发出一个可由节点事件发射器接收的事件。

下面是一个 Windows Core Audio API 回调方法的示例:

这是我希望在上述回调函数中拥有的一些理想的 C++ 风格的伪代码:

我不确定如何实现这一点,所以这是我的问题:如何通过 C++ 回调函数向 Node.js 应用程序发出事件?

我对其他解决方案持开放态度,只要它们可以在 Node 上本地运行(IE 通过附加组件),并且可以在 Windows 7 上运行,这意味着对 nircmd 等应用程序的外部调用不可用。

编辑

这是一些实验性代码,可以尝试帮助描述我在做什么:

音频设备发射器.h:

AudioDeviceEmitter.cpp

绑定.cpp:

此代码会引发错误并且无法编译,希望在这里更全面地解释我的问题。

0 投票
1 回答
455 浏览

c++ - 使用 Node.js N-API 调用 C 函数显示不是预期的输出

我是 Node.js N-API 的新手。让我直奔问题。

我正在尝试Camellia_Ekeygen使用 N-API 调用 C 函数,但该函数的输出m_uKttWork与直接使用 C++ 代码调用相同的函数不同。

这是参考的代码和输出。

使用 N-API

模块.cpp

模块.js

输出

Camellia_Ekeygen直接调用

测试.cpp

输出

在这种情况下我应该看什么?这几天我一直在寻找线索,但到目前为止仍然不知道。任何故障排除方向或参考表示赞赏。

0 投票
1 回答
1396 浏览

node.js - Node.js N-API 插件 - 如何字符串化/解析 JSON?

我正在使用N-API(C 接口,不要与围绕 N-API 的node-addon-api C++ 包装器混淆)为 Node.js 编写一个插件,它从外部源接收 JSON 格式的数据,需要在其对象形式上执行一个 JS 回调函数。但是,在将 JSON 格式的数据传递给 JS 回调之前,我无法在插件中将其解析为适当的对象(即,由 JSON.parse 产生),并且似乎只能在其文本中传递它形式。

到目前为止,我发现的唯一示例涉及直接使用C++ NAN和 V8 API。我错过了什么吗?我是否应该对 JSON.parse 进行另一个 napi_call_function 调用,捕获其返回值,然后将其传递?(如果是这样,我如何从我的插件中获取 JSON.parse 回调信息?)是否有我没有找到的更简单的 API?

出于许多原因,我更愿意继续使用 C 而不是 C++,尽管我认为这是可以商量的。

foo.js

myaddon.c

0 投票
2 回答
317 浏览

javascript - 使用 NodeJS N-API 计算浮点值时出现问题

大家好,

来自网络开发世界。我目前正在尝试做一些 C 代码,它将 RGB 值转换为 NodeJS 可以通过 N-API 使用的 XYZ 值。我遇到的问题是关于浮动计算。以下是我的问题的解释:

根据下面的 C 代码,此代码尝试将 RGB 值转换为 XYZ 值。

我正在使用这个 JS 片段来调用我的库

如果一切正常,输出应该如下所示

但是我的输出是这个

如您所见,输出完全错误。然而,这个错误的输出只发生在我的本地机器(OSX)上,并且只有当我尝试使用 JS 片段进行转换时。

实际上,当我尝试直接通过 Xcode 使用下面的这段代码运行转换时,输出是正确的

此外,当我尝试通过运行 OSX 的 travis 调用 JS 代码时,以及通过 Docker 在 Ubuntu 上调用 JS 代码时,JS 代码也会输出正确的值

它是否与硬件或我编译库的方式更相关?

先感谢您。