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));