node-red-dashboard icon indicating copy to clipboard operation
node-red-dashboard copied to clipboard

RangeError: Maximum call stack size exceeded

Open JpEncausse opened this issue 3 years ago • 1 comments

What are the steps to reproduce?

I have a very simple dashboard with

  • 2 LineChart Nodes : Trigger > REST Call > JS > LineChart Update (I did the trick to delete the msg.req)
  • 5 Custom Node : Trigger > Template HTML > Node Call
  • 1 CSS Header Node

The template look like that :

{{#room.blink}}<img class="room-blink" src="../blink/th_{{room.blink}}.jpg" />>{{/room.blink}}
<div class="room-panel room-awake-{{room.awake}}">
    <div class="room-label">{{room.label}}</div>
    {{#room.dim}}<div class="room-dim">💡️{{.}}</div>{{/room.dim}}
    {{#room.lux}}<div class="room-lux">☀️{{.}}</div>{{/room.lux}}
    {{#room.audio}}<div class="room-audio">🔊{{.}}</div>{{/room.audio}}
</div>

What happens?

I have the following error :

RangeError: Maximum call stack size exceeded
at hasBinary (/node_modules/node-red-dashboard/node_modules/socket.io-parser/dist/is-binary.js:28:19)

The Node-RED crash and restart

What do you expect to happen?

I don't understand what is happening, I assume the browser refresh a websocket connection with Node-RED And then trigger the error then crash Node-RED

Please tell us about your environment:

  • [ ] Node-RED-Dashboard version: 3.1.7
  • [ ] Node-RED version: 2.2.2
  • [ ] node.js version: 16.15.0
  • [ ] npm version: 3.1.7
  • [ ] Platform/OS: Ubuntu 18 on Azure
  • [ ] Browser: Chrome

JpEncausse avatar Jul 17 '22 09:07 JpEncausse

It seems I find a workaround,

  • I remove all Emoji but it's not the issue
  • I remove all object attach to msg. that could create cycle it seems to work.

The weird thing is that payload is only a String and I assume the dashboard node do not sent the full msg. So it try to encode something that is not relevant. I continue the test.

JpEncausse avatar Jul 18 '22 11:07 JpEncausse