问题标签 [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.

0 投票
3 回答
6415 浏览

c++ - Node.js 原生插件:node_api.h 位于何处?

我正在尝试为 Node.js 创建一个本机插件,当我包含

VS Code 的 Intelli Sense 表示它无法检测到node_api.h它的位置(它包含在 中napi.h)。

node-gyp build效果很好并且可以编译。但我不明白系统中的标头在哪里node-gyp,从哪里得到它?我需要添加 Intelli Sense 选项的路径,以便更好地理解一般的构建过程。

我正在玩这个代码示例

0 投票
0 回答
37 浏览

javascript - 无法从外部模块获取新值

我有一个日期模块,它返回系统中设置的当前日期:

我在另一个文件中要求它:

问题是当用户从系统手动更改日期并再次调用此方法时,方法调用没有返回新的日期值:

c在我的项目中使用节点插件,我要求它是这样的:

但我仍然得到旧的日期值。不确定缺少什么

0 投票
1 回答
382 浏览

c++ - 插件:TypeError:addons.function() 不是函数

我对插件等还是很陌生。我正在尝试运行一个简单的 c++ 函数,将“Hello MIKE”打印到节点 js 中。但是,我收到以下错误:

这是我的主要cpp

和我的 index.js

还有一些我注意到与我正在关注的教程不同的东西。这就是我从我的主要 cpp 中获取的函数:exports : { Function: [Function (anonymous)] } 在教程中没有那个匿名部分,那么为什么它在这里将我的读作匿名?

提前致谢

0 投票
1 回答
1381 浏览

c++ - 如何将节点 v8 字符串转换为 C++ 字符串

我是编写节点 C++ 插件的新手。
我想将参数字符串从节点更改为更改 c++ 字符串,
但出现错误,我尝试了这个问题,
如何将 std::string 转换为 v8 的 Local<string> 它不起作用。
我已经尝试过这些功能,但没有一个工作。

0 投票
1 回答
374 浏览

node.js - nodejs插件和wasm的比较

将 C/C++ 或 Rust 代码集成到 Electron App 以执行 CPU 密集型任务、nodejs 插件或 wasm 的更好方法是什么?请在效率、兼容性等方面比较这两种方法。

0 投票
1 回答
130 浏览

node.js - 将节点终端/main.js 日志打印到渲染器控制台(开发人员工具)

我有一个电子应用程序,其中使用了 c++ 本机插件。

C++ 代码将日志打印到终端,在开发时我可以在 termianl 中看到它们。
Electron 应用登录 renderer.js 控制台(开发者工具控制台)。
构建应用程序可执行文件后不会发生同样的事情,因为那里没有 termianl ......

所以在构建之后我只能看到 renderer.js 日志并且不能从 main.js 和 c++ 代码访问日志。

ISSUE:
如何将终端日志和 main.js 日志打印到渲染器控制台。

0 投票
0 回答
91 浏览

c++ - 使用带有 cmake-js 的 lib2geom 编译脚本以在 N-API node.js 插件中使用

我正在尝试在 Electron 应用程序中使用lib2geom。我能够编写一个脚本,该脚本使用该库来获取两条路径的交集,然后使用https://github.com/nodejs/node-addon-examples中的示例将其用 node-addon-api 包装。我主持了这次尝试:lib2geom-path-boolean-addon

我在使用 cmake-js 构建脚本时遇到问题(我成功地使用 CMake 构建了一个非插件脚本)。如 CMakeLists.txt 文件中所述,尝试运行 install npm 脚本时出现以下错误:

并在此处采纳建议(现已发表评论)并没有解决问题。

我只是在为这个插件学习 C++ 和 CMake,所以很难知道从哪里开始调试这个问题。任何见解将不胜感激。我希望这可以成为社区的宝贵资源。

0 投票
0 回答
315 浏览

c++ - Magick++/NAPI 模块内存泄漏

我正在使用利用 Magick++ 库的 node-addon-api 编写本机模块。该模块采用图像的文件路径以及一些参数并返回缓冲区。我似乎遇到了一个非常糟糕的内存泄漏问题,Massif 报告该问题与创建的缓冲区或 Magick++ 图像有关。这是我的 C++ 代码:

还有一个示例 JS 脚本:

这是脚本的示例输出:

如您所见,每次运行该函数时,驻留集的大小都会显着增加。我使用的任何格式的每个图像都会发生这种情况。我将如何防止代码泄漏?提前致谢。

编辑: 我做了一些更多的挖掘,结果发现由于缓冲区不是通过 JS 创建的,所以它不符合垃圾收集的条件。我现在想知道是否可以创建一个缓冲区,让 V8 收集垃圾并仍然提供相同的数据。

0 投票
2 回答
3726 浏览

node.js - 使用 Visual Studio 2017 或 2019 编译 node-gyp C++ 插件

我正在尝试从 https://github.com/nodejs/node-addon-examples/tree/master/1_hello_world/node-addon-api运行 Node C++ 插件示例

使用命令:

我正在使用带有 node.js v12.18.3 node-gyp v7.1.0 的 Windows 10

具有以下变量用户变量:

系统变量:

npm 配置详情(npm config list --json):

我已经安装了 Visual Studio 2017 以及此处提到的所有相关 C++ 构建工具: 如何解决错误 gypgyp ERR!ERR!发现 VSfind VS msvs_version 未从命令行或 npm 配置设置?

但仍然收到此错误:

当我尝试更改上述所有参数以使用安装了所有 VS2015 构建工具的 VS2015 时,它可以正常工作。

如何修复上述错误以使用 Visual Studio 2017 或 2019?

0 投票
1 回答
219 浏览

c++ - 在节点 C++ 插件中返回布尔值

在 Node C++ Addon 中,我可以返回这样的字符串:

如何实现相同但设置布尔值而不是字符串?