问题标签 [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.
node.js - Node JS 插件 - NAN 与 N-API?
我正在寻找使用带有 C++ 的节点 js 插件的项目。我遇到了两个可以使用的抽象库 NAN 和 N-API。但是我无法决定应该使用哪一个。我无法在这两个库之间找到适当的比较。
两者的优缺点和区别是什么?如何在它们之间进行选择?
到目前为止,我发现 NAN 有更多关于异步调用的在线教程/文章。但是 N-API 得到了 Node 的官方支持(并且是在 NAN 之后创建的,作为一个更好的选择,虽然不确定。)
node.js - 具有 N-API 部署的 firebase 云功能失败
试图找出是否可以使用本机代码(使用 N-API)运行 firebase 云功能。我有一个简单的“hello world”示例,它在模拟器下运行良好,但是当我尝试部署它时,我收到 INVALID_ARGUMENT 错误:
这不是很丰富......只是想知道是否有人可以阐明这种情况。谢谢!
这是功能:
和相应的 C++ 源代码:
c++ - N-API wrap 找不到函数
我有一个围绕 C++ 类的简单 N-API 包装器。类被实例化和解构,但类中的实例变量没有被声明,即标准输出显示导出不包含“App.m_variable”。
我已经阅读了所有文档https://nodejs.org/api/n-api.html#n_api_napi_define_class,我已经浏览了所有提到“napi_define_class”的谷歌网站。
没有喜悦。
任何帮助将不胜感激!
您可以看到有充分的证据表明 napi_define_class() 工作正常:
- 正在调用和创建 App() 实例
- 析构函数被调用并工作
- 该类正在导出
但是属性,特别是 m_variable,应该显示在导出中。所以 napi_property_descriptor 定义可能有问题?
另请注意,对 n_app_get_m_variable 和标准输出的调用应该有一个日志行显示它已被调用。但这不会发生。
注意属性参数我尝试了一堆不同的值:
- napi_default
- napi_configurable
- napi_static
- napi_enumerable
c++ - 是否可以在标准 nodeJS 对象上创建一个新方法,例如使用 C++/napi 等的“fs”?
我有兴趣为 nodeJS 制作我的第一个本机 C/C++ 插件。
从概念上讲,它是一种文件系统方法,作用于路径或文件描述符,fs.stat()
与朋友密切相关。
通过阅读文档和查看 N-API 示例,我看不出创建新方法是否可能或绝对不可能。
有谁知道这是否可以完成,或者我是否必须让它独立?
node.js-addon - 如何知道特定示例或 repo 使用了几种制作 C/C++ nodeJS 插件的方法中的哪一种?
显然,多年来情况已经演变,有三种、四种或五种主要方法可以用 C/C++ 编写 nodeJS 插件,具体取决于您在哪里阅读它。
对于我们这些只是想在 2021 年学习和编写我们的第一个插件的人来说,这可能会令人困惑。我可能会在我的网络浏览器中打开一些教程,并从 GitHub 下载一些代码库,以了解某些事情是如何完成的。
但是除非顶部有注释清楚地说明每个教程或 repo 使用的四种方式中的哪一种,否则它会变得非常混乱。当你刚开始时,每个人都有的名字并没有足够的区别来提供很大的帮助。
那么,当我查看使用这四种方式的代码时,我可以一目了然地了解哪些内容?
我看到有各种主要的包含文件可能位于主 C/C++ 源文件的顶部,并且有某些宏或函数调用的名称略有不同,它们根据插件使用的方式执行相同的操作。
这可能会因为这些方式中的一些方式变得复杂,要么是其他方式的包装,要么有时需要调用较低级别的函数。我不确定。