问题标签 [node-addon-api]
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.
node.js - 是否可以使用通用调试器(gdb、lldb 等)在电子应用程序中调试 node c++ 插件?
我正在尝试调试在电子应用程序中调用的节点插件,但我找不到启动或将 c 调试器附加到应用程序的方法。当它被一个简单的节点应用程序调用时,我已经成功调试它,通过在启动调试器时调用节点,将 js 文件作为参数传递(我使用了本教程:https ://medium.com/@atulanand94/debugging- nodejs-c-addons-using-vs-code-27e9940fc3ad)。有没有办法启动电子可执行文件,以类似的方式传递应用程序的主代码(index.js)?
javascript - 如何使用 N-API 将 BigInt 类型从 C++ 返回到 javascript?
我正在使用此https://github.com/nodejs/node-addon-api/blob/master/doc/bigint.md文档作为从 c++ 返回 bigint 的参考,但出现以下错误:
这是我的源代码:
在 napi.h 中,BigInt 功能仅在 NAPI_VERSION 定义大于 2147483646 时可用。当我将 NAPI_VERSION 定义设置为高于 2147483646 的数字时,我收到以下错误消息
c++ - 如何使用 node-gyp 提供静态 C 库函数?
我尝试通过 node-gyp 和 node-addon-api 编译 node_module。编译没有错误,但我无法从静态库中公开函数。(与最终节点文件一样小于静态库 abc.a)
绑定.gyp
主文件
main.js(用于暴露对象)
javascript - node-addon-api 传递另一个类的对象作为回调函数参数
如何在 node-addon-api 中将另一个类的对象作为回调函数的参数传递?
代码片段:
在这里,我一直在尝试异步执行代码。但我无法编译代码,因为它抛出“没有匹配的成员函数调用'Call'Callback().Call(”错误。
我需要在我的 js 脚本中返回 Third_Party_Library_Method() 的返回值。有没有办法将此对象转换为通用 node-addon-api 对象?
我是 C++ 的新手,任何帮助都将不胜感激。
javascript - 从 C++ 插件函数调用中填充 HTML 选择标记
我只是不确定如何解决这个问题。我的 HTML 中有一个空白的选择标签,JS 处理点击事件。然后我构建了一个插件,它从其他来源构建一些对象,每个对象都包含一个唯一的标识字符串。
我将如何从插件中的数据中填写选择标签?
我找不到在 C++ 插件中填充它的方法,但我也想不出一种干净的方法让 Javascript 调用单个函数来完全填充它。
javascript - 从节点插件多次调用JS函数
编辑:显然不清楚,我想我会让它更简洁。
构建节点应用程序,使用本机插件。我需要通过 node-addon-api 将此项目中的 Javascript 函数传递到我的 C++ 插件中。然后,我需要能够从 C++ 多次调用该函数。当我发现由于 napi_env(调用函数所需的)受到缓存保护而无法保存对 Javascript 函数的引用时,问题就出现了。
在互联网上找不到有关如何执行此操作的任何明确答案或示例,正在寻找提示。
原来的:
正如标题所描述的,我需要想办法在我的插件中多次调用 JS 函数。通用用例是我的插件执行一些长时间运行的命令,并且需要定期将状态更新推送回 javascript。
我认为最好的方法是让用户传入一个函数(它只是附加到一个文本块)让我的插件调用(这样它就可以编写更新),这样 javascript 端可以决定它在哪里显示。
我已经尝试过让这个工作。发现我将函数保存在持久 napi_value 中的原始方法不起作用,因为您也无法保存 napi_env。
我找到了这个线程,我认为它最接近我需要的东西,但我无法将 Nan 翻译成 napi_ 所以它可以与我正在使用的东西一起使用。来自多线程 C++ 插件的回调 NodeJS Javascript 函数
还尝试传入 EventEmitter,但问题与上述类似。
如果我朝着正确的方向前进,任何人都可以给出一些指示吗?也许帮我找出一些关于如何实现这一目标的例子?
c++ - 使用 N-API 将数据流式传输到 Node.js C++ 插件
我正在为 NodeJS 构建一个 C++ 插件,我想将数据从 C++ 异步流式传输到 Node。但是,我找到了这篇文章https://nodeaddons.com/streaming-data-into-a-node-js-c-addon/;我想使用 N-API 而不是 NAN。
我一直在搜索 NodeJS 文档和示例,以及寻找其他资源和示例,但还没有找到资源来告诉我如何实现这一点。这是我第一次为 NodeJS 编写 C++ 插件。
一个可以帮助我入门的示例是一个插件,它使用 N-API 每秒向 Node 发送一个虚拟字符串,并且 Node 会将字符串打印到控制台。
javascript - Napi::ObjectWrap: 是一个析构函数,如何调用?
多亏了node-addon-api ,我正在为 node.js 构建一个插件。
我的每个“传统”C++ 类都包装了一个 C 对象。然后我的 Napi::ObjectWrap 类包装这些 C++ 对象。
MyObjectWrapper 实例包含对 MyObject 实例的引用,其中包含对 my_object 实例的引用。由于需要释放 C 对象,我认为 MyObject 的析构函数可以完成这项工作,但包装器从未调用过它。
我对 node-addon-api 还很陌生,我不确定是否理解需要的垃圾收集器。
我想知道的是包装器何时以及如何被销毁,以及将 null 传递给 Javascript 端的对象是否有任何影响。对此的任何线索将不胜感激。
node.js - 如何使用 InstanceMethod() 包装返回对象的方法?
致力于创建一个将返回Object
节点环境的附加组件。基于Atul Anand 在 C++ 中对 N-API 的介绍,我将类对象的方法封装在InstanceMethod()
其中以公开它们;但该函数需要一个返回 a 的方法Napi::Value
。我无法弄清楚将 C++ 指针转换为Value
; Value::From(env, ptr)
错误(Visual C++ 2017)与“无法从'初始化列表'转换为'Napi::Value'”。