Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
Emitir un evento en Node.js C++ Addon (N-API)

Tengo un complemento de C++ que usa un SDK de escáner. Cuando se escanea un código de barras, quiero pasar esos datos a mi aplicación Node.js. Todo funciona (incluido el evento 'conectar') hasta que el código C++ intenta emitir el evento 'barcodeScanned'.

El error que recibo es:

 # # Fatal error in v8::HandleScope::CreateHandle() # Cannot create a handle without a HandleScope #

Código relevante:

 void NodeZebraAddon::SetEmitFunction(const Napi::CallbackInfo &info) { Napi::Env env = info.Env(); Napi::Function func = info[0].As<Napi::Function>(); EventEmitter = Napi::Persistent(info[0].As<Napi::Function>()); EventEmitter.Call({Napi::String::New(EventEmitter.Env(), "connect")}); } void NodeZebraAddon::OnBarcodeEvent(short int eventType, std::string &pscanData) { Napi::HandleScope scope(EventEmitter.Env()); cout << "Barcode Detected" << endl; cout << "Out XML" << endl; cout << pscanData << endl; EventEmitter.Call({Napi::String::New(EventEmitter.Env(), "barcodeEvent"), Napi::String::New(EventEmitter.Env(), pscanData)}); }

prueba.js

 const emitter = new EventEmitter() const instance = new NodeZebraAddon(); emitter.on('connect', () => { console.log('onConnect'); }) emitter.on('barcodeEvent', (evt) => { console.log(evt); }) instance.setEmitFunction(emitter.emit.bind(emitter));
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!