问题标签 [node.js-nan]

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 回答
49 浏览

node.js - 南::到接受所有转换

我正在尝试编写一个参数验证辅助函数,但显然 Nan::To 永远不会失败并反对 T,即使转换是不可能的。

//转换.cpp

//test.js

})

在上面的代码中,如果我的理解是正确的,从 Nan::To 返回的 Maybe 对象应该是空的。不应该有从 json 到 u_int32_t、函数到 u_int32_t 或未定义到 u_int32_t 的合法转换。

但我仍然觉得这三个案例都是公正的。

我是否误解了 Nan::To 功能?

0 投票
0 回答
39 浏览

node.js - 如何打包和使用我的节点原生扩展?

我已经构建了我的第一个节点本机扩展,并希望在另一个节点应用程序中使用它,但我不知道需要打包哪些文件,也不知道应该如何打包它们以供其他应用程序分发和使用。

在我的扩展项目的“build/release”目录中有“mylib.lib”、“mylib.node”和“mylib.exp”。“mylib.node”是应用程序发布和使用的唯一文件吗?

大概不是,因为我的扩展项目的根级别包含“package.json”,我认为这是 NPM 所必需的。但我不希望他们必须构建/编译,所以我可能需要一个完全不同的 package.json 用于分发与开发?

0 投票
1 回答
191 浏览

javascript - 如何在 V8 中创建 ES6 类(用于 Node.js 原生插件)?

我正在编写一个 Node.js 原生插件(带有nan帮助模块)。我想创建和导出一个 ES6 类值,类型"function"和。即,我想知道本机等价物:.toString()"class ... { ... }"

.


我在V8文档中唯一能找到的就是.SetName().

但它只会改变函数的名称:

,它根本不会创建 ES6 类。


我该怎么做呢?

0 投票
1 回答
409 浏览

c++ - 为什么我的 NAN_METHOD 无法识别?

尝试运行我的 Node 本机扩展时出现以下错误(它构建时没有错误)。我想知道为什么会出现此错误,因为据我所知,我所做的一切都是正确的。

这是“nodeTest.cpp”文件:

这是“nodeTest.js”文件:

这是“package.json”文件:

这是“bindings.gyp”文件:

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 投票
1 回答
277 浏览

c++ - 处理OKCallback崩溃

嗨,当我在 argv [1] 上执行检查时,下面的代码会崩溃。请帮助修复它,在将值分配给 argv[1] 时,我需要检查 bool 变量checktrue是否为 true 分配字符串值,否则分配 int 值,如下代码所示。

注意输出:进程 123432098(节点)终止 SIGSEGV 代码=1 fltno=11 ip=0000000001076a08(/usr/lib/ldqnx-64.so.2@memcpy+0x0000000000000048) mapaddr=0000000000076a08。参考=2073696874206f74

0 投票
1 回答
69 浏览

javascript - 在 Nan::ObjectWrap C++ 类中存储 JavaScript 实例的正确方法

假设我有两个用 C++ 开发的类,但使用 Nan NodeJS 本机模块公开。例如,“Sprite”和“Texture”类。

在 JavaScript 中,我希望能够让 Sprite 存储一个 Texture,就好像它只是另一个属性一样:

在 C++ 方面,Sprite 的“纹理”属性将是存储或检索纹理的 Getter/Setter。但问题是,在内部存储 Texture 实例的正确方法是什么(来自提供的 v8::Local)?就像,我需要做些什么才能将它注册为 Sprite “拥有”并使其不会像上面的示例中那样被 GC 处理?

0 投票
2 回答
6847 浏览

node.js - Node JS 插件 - NAN 与 N-API?

我正在寻找使用带有 C++ 的节点 js 插件的项目。我遇到了两个可以使用的抽象库 NAN 和 N-API。但是我无法决定应该使用哪一个。我无法在这两个库之间找到适当的比较。

两者的优缺点和区别是什么?如何在它们之间进行选择?

到目前为止,我发现 NAN 有更多关于异步调用的在线教程/文章。但是 N-API 得到了 Node 的官方支持(并且是在 NAN 之后创建的,作为一个更好的选择,虽然不确定。)

0 投票
2 回答
437 浏览

node.js-addon - 如何知道特定示例或 repo 使用了几种制作 C/C++ nodeJS 插件的方法中的哪一种?

显然,多年来情况已经演变,有三种、四种或五种主要方法可以用 C/C++ 编写 nodeJS 插件,具体取决于您在哪里阅读它。

对于我们这些只是想在 2021 年学习和编写我们的第一个插件的人来说,这可能会令人困惑。我可能会在我的网络浏览器中打开一些教程,并从 GitHub 下载一些代码库,以了解某些事情是如何完成的。

但是除非顶部有注释清楚地说明每个教程或 repo 使用的四种方式中的哪一种,否则它会变得非常混乱。当你刚开始时,每个人都有的名字并没有足够的区别来提供很大的帮助。

那么,当我查看使用这四种方式的代码时,我可以一目了然地了解哪些内容?

我看到有各种主要的包含文件可能位于主 C/C++ 源文件的顶部,并且有某些宏或函数调用的名称略有不同,它们根据插件使用的方式执行相同的操作。

这可能会因为这些方式中的一些方式变得复杂,要么是其他方式的包装,要么有时需要调用较低级别的函数。我不确定。

0 投票
1 回答
123 浏览

c++ - 如何在 nan、C++ 中将 int 转换为字符串?

所以,我明白了:

这里使用https://github.com/nodejs/nan我需要从这个函数返回一个字符串值。函数 fib 返回一个 int 值。任何将 int 转换为字符串的方法都会给我不同的错误。