标签: node.js-addon

NodeJS-C 接口

我试图弄清楚如何在 C 库和 NodeJS 模块之间传递数据。我可以通过 NodeFFI 模块执行此操作吗?

或者我是否必须编写自己的 NodeJS 插件来开发 C-NodeJS 接口?

c node.js node-ffi node.js-addon

1
推荐指数
1
解决办法
1639
查看次数

Node Buffer to char数组

我有一个本机NodeJS插件,它接受一个Buffer实例作为其中一个参数.

我可以使用以下代码将char数组转换为a Buffer,但是寻找相反的方法.

static v8::Local<v8::Object> create_buffer(char *data, unsigned long length) {
  node::Buffer *slow_buffer = node::Buffer::New(length);
  memcpy(node::Buffer::Data(slow_buffer), data, length);

  v8::Handle<v8::Value> constructor_arguments[3] = {
    slow_buffer->handle_,
    v8::Integer::New(length),
    v8::Integer::New(0)
  };

  v8::Local<v8::Object> global_object = v8::Context::GetCurrent()->Global();
  v8::Local<v8::Function> buffer_constructor = v8::Local<v8::Function>::Cast(global_object->Get(v8::String::New("Buffer")));

  return buffer_constructor->NewInstance(3, constructor_arguments);
}
Run Code Online (Sandbox Code Playgroud)

c++ v8 node.js node.js-addon

1
推荐指数
1
解决办法
3471
查看次数

如何在"node-gyp rebuild"中静默"'NewInstance'已被弃用"警告?v8中NewInstance的替代方案是什么?

你好V8程序员和节点gyp'ers.我跑OS X 10.12.6,Node v6.11.1npm v3.10.10,nan v2.6.2,gcc为的XCode与此版本输出的一部分:

$ > gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

请帮助我了解如何正确使用NewInstance方法和过程中消除警告npm installnode-gyp rebuild我的自定义程序包安装的过程吗?

> node-gyp rebuild

  CXX(target) Release/obj.target/cellcrypt/src/cellcrypt.o
  CC(target) Release/obj.target/cellcrypt/src/decode.o
  CXX(target) Release/obj.target/cellcrypt/src/DecryptionWrapper.o
../src/DecryptionWrapper.cpp:55:44: warning: 'NewInstance' is deprecated [-Wdeprecated-declarations]
    v8::Local<v8::Object> instance = cons->NewInstance();
                                       ^
/Users/sjcbsolo/.node-gyp/6.11.1/include/node/v8.h:3276:52: note: 'NewInstance' has been explicitly marked deprecated here
  V8_DEPRECATED("Use maybe version", Local<Object> NewInstance() const);
                                               ^
1 warning generated. …
Run Code Online (Sandbox Code Playgroud)

javascript v8 node.js node-gyp node.js-addon

1
推荐指数
1
解决办法
874
查看次数

Node API 抛出它自己的错误消息而不是自己的错误消息

我正在尝试为 编写以下函数NAPI

int addon::fakeAdd(int a, int b)
{
    return a + b;
}
Napi::Number addon::addWrapped(const Napi::CallbackInfo &info)
{

    Napi::Env env = info.Env();
    if (info.Length() < 2 || !info[0].IsNumber() || !info[1].IsNumber())
    {

        auto x = Napi::TypeError::New(env, "You did not provide 2 numbers");
        x.ThrowAsJavaScriptException();
    }

    Napi::Number num1 = info[0].As<Napi::Number>();
    Napi::Number num2 = info[1].As<Napi::Number>();
    int returnValue = addon::fakeAdd(num1.Int32Value(), num2.Int32Value());
    return Number::New(env, returnValue);
}
Run Code Online (Sandbox Code Playgroud)

我将此函数导出为add. 当我使用参数(例如)从 javascript 调用它时,addon.add(1,2)一切都像魅力一样工作,我得到了正确的结果,即 3。现在我想处理用户没有向我的函数提供任何参数或(一个或两个)的情况参数不是数字。在这种情况下,我想抛出一条自定义消息(“您没有提供 2 个数字”)。但是,当我尝试在没有任何参数的情况下从 JavaScript 调用我的方法时,出现以下错误:

console.log(addon.add());
                  ^

Error: A number …
Run Code Online (Sandbox Code Playgroud)

c++ node.js node.js-addon

1
推荐指数
1
解决办法
4101
查看次数

标签 统计

node.js ×4

node.js-addon ×4

c++ ×2

v8 ×2

c ×1

javascript ×1

node-ffi ×1

node-gyp ×1