问题标签 [n-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 投票
1 回答
116 浏览

c - 在 Node-Red 上导入 C 项目

我有一个 C 项目(十六进制文件),我想在我的节点红色项目中使用。通过在 node-red 中创建我自己的节点来调用这个项目并与之交换数据。

知道我没有代码源。

我的问题是:

可能吗?

如果是这样,我该怎么做?我已经阅读了一些关于 N-API 的文档,但我不知道它是否有用。

0 投票
1 回答
662 浏览

node.js - 如何在 Node v10 的 Google Cloud Functions 中使用 ffi-napi

我在 Google Cloud Function (Node v10) 中遇到本机模块依赖项(特别是 IBM MQ for js)的问题,并且在任何地方都没有找到我需要的信息,所以我打开了这个问题并回答了自己以允许其他人以便在将来找到它。

它在 Node v8 引擎中运行良好,但现在已弃用。在将引擎升级到 v10 并碰撞一些包(遵循有关我的依赖项的所有迁移指南)之后,ffi-napi包在 期间抛出异常yarn install,如下所示:

它在本地(OSX Catalina 节点 10.21)和 Docker(在基于 alpine 的节点 10 和 12 主要标签中测试)都可以正常工作。

0 投票
0 回答
143 浏览

node.js - reactjs / webpack错误无法解析napi模块

我制作了一个简单的 c++ n-api 模块,该模块在使用 node 启动时可以工作,但无法在 reactjs / webpack 中加载

未找到模块:错误:无法解析

模块的路径是正确的。

我正在使用版本:“react”:“^16.8.6”,“webpack”:“^4.42.1”,“node-addon-api”:“^3.0.0”

添加一些信息,因为评论者没有正确阅读它,这可能是我的错。

node-gyp 编译并创建二进制“module.node”

Node 在 require 函数(在 js 中)使用时会读取此文件,但 reactjs 不理解它。使用 nodejs 的 js 文件示例:

同样,NodeJs 读取它,函数可以被调用和工作。ReactJs 在“要求”时失败

需要什么(编译选项中缺少某些内容或需要不同的工具)才能与 reactjs 一起使用。

希望可以有人帮帮我。谢谢你。

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 投票
2 回答
421 浏览

c++ - 如何在 N-Api Addon C 中解决 Node.js Promise

我的主要问题是在插件中从 Node.js 调用异步函数并获取返回值。我正在尝试解决从被调用的 JS 函数返回的承诺。

index.js

插件.cpp

在 addon.cpp 我想调用异步 JS 函数并获取返回值

我以这个文档为例https://nodejs.org/api/n-api.html#n_api_promises

0 投票
0 回答
110 浏览

c++ - 嵌入式节点执行 .node 文件

我使用 Node 存储库中的 Embed_Test 示例构建了一个嵌入式 Node 实例。使用这个实例,我正在尝试执行一些 C++ 代码。我有一个生成的 .node 和 .dll,并且我有 webpack'd 我的 Javascript 文件。当我跑步时,

它运行良好。但是,当我启动嵌入式 NodeJS 应用程序并尝试运行 bundle.js 时,我收到以下错误(好像它无法加载 .node 文件?):

这是我的 App.js,在 webpack 之前:

我尝试将 test.node 和 test.dll 与 node 的嵌入式实例粘贴在同一个文件夹中,我尝试将它放在与 webpack 相同的目录中,我尝试将它粘贴在相对目录中嵌入式节点(所以它会在../build/Release/)——但错误总是一样的。我需要做什么才能让它“看到” .node 文件?

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 投票
0 回答
40 浏览

node.js - `napi_throw_type_error` 结构中的`code` 是什么意思?

在 N-API 的上下文中,函数node_api.h领域的主要内容是什么?文档只说“要在错误上设置的可选错误代码。”,通常这应该包含什么样的数据?codenapi_throw_type_error

如果没有这个参数,我的函数可以正常工作,但我正在考虑将返回码作为字符串传递:

这是可接受的用途吗?

0 投票
1 回答
449 浏览

c++ - 如何从 NAPI(节点插件)接口读取文件并使用 nodejs 文件流写入不同的文件

我正在尝试读取 NAPI 应用程序中的文件并调用回调函数将其写入 nodejs 应用程序中的 writestream。

exmaple_Class.cpp

exmaple_Class.js

C++侧函数的限制是它不能返回值,所以数据必须在回调中返回。有趣的是,如果它是一个文本文件,它可以正常工作,但对于 zip 或 jpeg 等其他类型的文件,我会得到乱码数据。如果我将文件描述符传递给 C++ 函数并使用 UNIX 写入函数,那么我会得到该文件。但我也想使用 express 通过 HTTP 发送该数据。那么出了什么问题呢?如何正确包装和返回 NAPI 对象中的二进制数据。

0 投票
1 回答
423 浏览

c++ - N_API 如何将 int 值参数发送到 Napi::CallbackInfo

这是我的第一个 node.js 和 n_api。我一直在使用 PHP/APACHI。但我需要用于我的网络的 c++ 库我决定使用 n_api。问题是ajax发送的值在c++中总是0。我不知道有什么问题。例如)我使用 vscode。

如果 ajax 发送 2,console.log(responseData.pID) //2 就会出现。这是正常的。下面是classtest.cpp

并且 ActualClass.cpp 文件显示问题。

仅准备文件 1 到 4。但是,输入函数的参数值始终为 0。结果是“无法打开文件 0.txt”。我该如何解决?

我知道这里它被转换为可以由 C++ 处理的 int 值。还有什么我不知道的吗?谢谢阅读。