rwaldron / johnny-five

JavaScript Robotics and IoT programming framework, developed at Bocoup.
http://johnny-five.io
Other
13.26k stars 1.76k forks source link

axListenersExceededWarning: Possible EventEmitter memory leak detected. 11 ioready listeners added. Use emitter.setMaxListeners() to increase limit #1740

Open comdek opened 3 years ago

comdek commented 3 years ago

Hello,

I´m trying to read a Arduino Uno Digital and Analog Pins, but after add more than 10 ports, an error as ocurred and some ports don´t read..

`Start Node-RED Welcome to Node-RED

1 Sep 20:22:00 - [info] Node-RED version: v2.0.5 1 Sep 20:22:00 - [info] Node.js version: v10.22.1 1 Sep 20:22:00 - [info] Linux 5.8.6-sunxi arm LE 1 Sep 20:22:02 - [info] Loading palette nodes 1 Sep 20:22:08 - [info] Dashboard version 2.23.4 started at /ui 1 Sep 20:22:09 - [info] Settings file : /root/.node-red/settings.js 1 Sep 20:22:09 - [info] Context store : 'default' [module=memory] 1 Sep 20:22:09 - [info] User directory : /root/.node-red 1 Sep 20:22:09 - [warn] Projects disabled : editorTheme.projects.enabled=false 1 Sep 20:22:09 - [warn] Flows file name not set. Generating name using hostname. 1 Sep 20:22:09 - [info] Flows file : /root/.node-red/flows_orangepizero.json 1 Sep 20:22:09 - [warn] 1 Sep 20:22:10 - [info] Server now running at http://127.0.0.1:1880/ 1 Sep 20:22:10 - [info] Starting flows 1630538530163 Available Firmata 1630538530187 Available Firmata 1 Sep 20:22:10 - [info] Started flows (node:27301) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 ioready listeners added. Use emitter.setMaxListeners() to increase limit (node:27301) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 networkReady listeners added. Use emitter.setMaxListeners() to increase limit (node:27301) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 networkError listeners added. Use emitter.setMaxListeners() to increase limit (node:27301) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 ioError listeners added. Use emitter.setMaxListeners() to increase limit 1630538530364 Connected Firmata 1630538530373 Connected Firmata ` arduino 1

dtex commented 3 years ago

These appear to be listeners on network traffic, not on the sensors themselves. I don't work with node-red, but I suspect that for each sensor instance a separate event listener is being added to listen for data on the network.

Are you using node-red-contrib-gpio?

3vilcrow commented 2 years ago

You need to cancel the events when you stop a sensor otherwise it will continue to trigger the sensor event, on reaching 10 you get the memory leak warning, this is not because of having several sensors, but because of having the same event repeated in a single sensor. Use sensor.removeAllListeners("event") or sensor.removeListener("event", cb)