问题标签 [node.js-addon]

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

c++ - 如何通过节点插件导出数组数据

我正在使用节点 0.12.x,我想从 C++ 编写的节点插件返回一些数组数据

这是返回 Number 数据的示例。

0 投票
0 回答
126 浏览

javascript - 使用 C++ 生成 SHA512 的 Node.js 插件

我想在 C++ 中创建一个附加组件,它将生成传递给其中函数的字符串的 SHA512。此 C++ 文件还将包含一个将在哈希生成期间使用的密钥。我的要求是我想从 Node.js 调用这个附加组件,并期望从这个库返回哈希。

我对此完全陌生。我已经尝试了 hello world 附加组件的示例示例和一些数字加法,但不知道如何创建自己的函数。我有用于生成哈希的 C++ 文件,但不知道如何将其全部绑定。

我正在粘贴 C++ 代码文件可用的链接:

http://www.zedwood.com/article/cpp-sha512-function

谁能帮我解决这个问题?

0 投票
1 回答
517 浏览

c++ - 如何让 v8 函数返回 c++ 对象?

我目前正在尝试更新 Node.js 的 C++ 库包装器。目前它使用 Nan 1.0,我需要将其转换为使用最新版本 Nan 2.0。但是,我遇到了一个有趣的问题。我有这两行:

使用 node-gyp 编译时,我收到错误

如何让 Nan::Get 函数返回一个 c++ 对象?

0 投票
2 回答
1412 浏览

c++ - 如何更新我的函数以使用新的 v8 FunctionTemplates?

我有一些使用 V8 FunctionTemplates 的代码。它是旧 Node.js 模块的一部分,充当 C++ 库的包装器。

但是,当代码运行时,编译器会给出这些错误。

V8引擎的文档说

但我不确定如何使用它来修复我的功能。有任何想法吗?

0 投票
1 回答
171 浏览

c++ - C++ node.js 插件 - Init() 中的参数说明

在创建 c++ node.js 插件时,有人可以解释 Init 的单参数形式和双参数形式之间的区别吗?

0 投票
0 回答
408 浏览

c++ - NodeJS 插件 (V8) 和线程

我想确定并了解线程是否可以在v8 functions. 要理解这一点,请考虑以下示例:此服务器行:

运行这个 v8 函数:

并进一步:

将会通知:

我无法在极端环境(有很多用户)中测试此代码,以查看性能。所以当我调用bufferingbuffering创建一个thread时,v8 function会等待线程的执行(返回到nodejs)?或者,正如我希望的那样,等待过程将julius完成join()

0 投票
1 回答
1849 浏览

javascript - 如何使用来自 C++ 插件的 node.js 内置模块

我需要使用我的 C++ 插件中内置的模块“crypto”中的 node.js。我试图找到使用内置模块的 C++ 插件的示例,但失败了。我查看了 node_crypto.h/.cc ,与 node.js 加密文档、受保护的构造函数等相比,它具有如此不同的函数签名。 node_crypto.h 包含带有一个参数的 InitCrypto() 声明,但 node_crypto.cc 没有这样的定义功能。只有 InitCrypto 有四个参数。无论如何,我尝试使用带有一个参数的 InitCrypto 并得到“符号查找错误”。

我可以将 require('crypto') 的结果传递给我的插件,然后使用这个对象,但这太不安全了。我们的 JS 代码在客户端的服务器上工作。

现在我认为 C++ 插件使用像 openssl lib 这样的东西而不是内置节点模块'crypto'更简单。

所以我需要一些带有 C++ 插件的工作示例,它使用“加密”模块或链接到一些关于此的文章。

使用来自 C++ 插件的任何内置模块的任何示例都会有所帮助。

0 投票
2 回答
2887 浏览

c++ - Link Node.js C++ add-on with static library

I have a C++ project that is intended to perform some calculations. The C++ code will sit on a server that as back end to a browser based GUI. Node.js seems to be suitable for this job. I've gone through the tutorials and learnt to build C++ code to be used as a nodejs module.

For the sake of simplicity, I'd like to compile the C++ code as a static library. I could then write a C++ class which references this library which can then be used in the nodejs environment. The point of this is so I don't have to use node-gyp build to build my entire C++ project. This way I can further develop the C++ code without worrying too much about the front end.

To achieve this, I have done the following:

  1. Built a simple C++ library as follows. Building this in Visual Studio 2013 to get the .lib file.

    /li>
  2. Created the C++ object to be used as a nodejs module like so:

    and the cpp file

    /li>
  3. Create the main cpp file to initialise

    /li>
  4. The binding.gyp file is defined as:

    /li>
  5. Build the project using node-gyp configure build

I get the following messages:

I need some assistance to either fix this error and make it work as I envision it or let me know if there's a better way. I'm quite new to C++ and coding in general so I may just be approaching this wrong.

0 投票
1 回答
860 浏览

c++ - Native Node.JS module - parsing an int[] from arguments

I am trying to write a native C++ module to include in a Node.js project -- I followed the guide here and have things setup pretty well.

The general idea is that I want to pass an array of integers to my C++ module to be sorted; the module then returns the sorted array.

However, I cannot compile using node-gyp build because I hit the following error:

error: no viable conversion from 'Local' to 'int *'

It is complaining about this code in my C++:

This all makes conceptual sense to me -- the compiler can't magically cast arg[0] (presumably of type v8::Local) to an int*. Having said that, I cannot seem to find any way to get my argument successfully cast into a C++ integer array.

It should be known that my C++ is rather rusty, and I know next-to-nothing about V8. Can anyone point me in the right direction?

0 投票
2 回答
2216 浏览

c++ - libuv 线程通信

我有一个 c++ 库,客户端应用程序使用这个库从服务器查询数据。该库创建一个单独的线程与服务器通信,查询结果将作为回调函数中的参数传递。

现在我想把这个c++ lib包装到nodejs本机模块中,因为在这个lib自己的线程中调用了回调函数,为了将查询结果传递给js环境,我相信我必须使用libuv的uv_async_send(uv_async_t* async)方法来传递两个线程之间的数据。(如果我错了,请纠正我)

根据libuv 的文档

警告:libuv 将合并对 uv_async_send() 的调用,也就是说,并非对它的每次调用都会产生回调的执行。例如:如果在回调之前连续调用了 5 次 uv_async_send(),那么回调只会被调用一次。如果调用回调后再次调用 uv_async_send(),则会再次调用。

这个警告是否意味着 uv_async_send 可能导致数据丢失?我想知道 libuv 是否为这个问题提供了更好的解决方案,或者我应该使用其他一些 thead 库。