Closed
Description
Summary of Problem
Opening a serial port from within a worker thread fails with:
Error: Module did not self-register.
Code to Reproduce the Issue
github repo: hugo-a-garcia/serial-worker
const {
Worker, isMainThread, parentPort, workerData
} = require('worker_threads');
const SerialPort = require("serialport");
const Readline = SerialPort.parsers.Readline;
if (isMainThread) {
console.log("In main thread");
const worker = new Worker(__filename);
worker.on('message', msg => {
console.log(msg);
});
worker.on('error', err => {
console.error("Oops " + err)
});
worker.on('exit', (code) => {
if (code !== 0)
console.log(`Worker stopped with exit code ${code}`);
});
} else {
console.log("In worker thread");
const port = new SerialPort("/dev/ttyACM0", {
baudRate: 9600
});
const parser = new Readline
port.pipe(parser);
parser.on("data", (data) => console.log(data));
// port.on('readable', function () {
// console.log(port.read().toString());
// });
port.on('error', function (err) {
console.log('Error: ', err.message);
});
parentPort.postMessage("Done.");
}
Versions, Operating System and Hardware
- SerialPort@? 7.1.5
- Node.js v? v12.9.1
- Linux
- Hardware and chipset? Arduino Uno connected to laptop
Possible related issue: N-API support for node-serialport #1186