当前位置:  开发笔记 > 编程语言 > 正文

将节点从nodejs插件发送到javascript

如何解决《将节点从nodejs插件发送到javascript》经验,为你挑选了0个好方法。

我正在构建一个应用程序(电子),我需要将它与c ++库连接.我使用NodeJS c ++插件完成了大部分绑定,但是我遗漏了一个重要的部分,它与在我的Javascript代码上接收c ++库生成的事件有关.

void Event1(int64_t id)
{

  ArrayBufferAllocator allocator;
  Isolate::CreateParams create_params;
  create_params.array_buffer_allocator = &allocator;
  Isolate* isolate = Isolate::New(create_params);
  {

    v8::Locker locker(isolate); 
    Isolate::Scope isolate_scope(isolate);

    HandleScope handle_scope(isolate);
    Local context = Context::New(isolate);
    Context::Scope context_scope(context);

    v8::Local argv[1] = {
      Nan::New("OnWillPlayTrack").ToLocalChecked(),  // event name
    };


    Nan::MakeCallback(isolate->GetCurrentContext()->Global(),"emit", 1, argv); 
  }


  isolate->Dispose();
}

Event1由c ++ lib调用,与V8无关,现在我想将一个事件激活到JavaScript,返回Node(EventEmitter?).我认为最大的问题是大多数v8函数现在需要一个Isolate,而且整个网络中发现的大多数例子都很老.

Event1代码在MakeCallBack崩溃:

Thread 24 Crashed:: App
0   libnode.dylib                   0x000000010a81e35b v8::String::NewFromOneByte(v8::Isolate*, unsigned char const*, v8::String::NewStringType, int) + 43
1   libnode.dylib                   0x000000010a4b042f node::OneByteString(v8::Isolate*, char const*, int) + 15
2   libnode.dylib                   0x000000010a4ba1b2 node::MakeCallback(node::Environment*, v8::Local, char const*, int, v8::Local*) + 50
3   libnode.dylib                   0x000000010a4ba240 node::MakeCallback(v8::Isolate*, v8::Local, char const*, int, v8::Local*) + 96
4   addon.node                      0x0000000110e62e1f Event1(long long) + 291 (v8.h:6721)

任何帮助将不胜感激!

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有