🎉 Node-RED 3.1.0 released

Doesn't happen on my FlowFuse 3.1.0 instance

I can't move the group - using Vivaldi on WIn11

update - it glitched once on my local NR instance - I could initially move the group outline but then it snapped back and I can't move it now

update2 - went back to my FF instance and the group outline had shifted - but then snapped back again

FF console if any help

Native NR win 11 console

Managed to get screenshot when it glitched

@knolleary - I "suddenly" have a need for the mermaid diagrams - is there a way to theme them ? (never understood their default themes they are horrible imo).

edit - including the theme above the diagram is possible i see, but a global config would be nice

```mermaid
%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#64748b',
      'primaryTextColor': '#fff',
      'primaryBorderColor': '#334155',
      'lineColor': '#334155',
      'secondaryColor': '#64748b',
      'tertiaryColor': '#fff',
      'fontFamily':'helvetica neue',
      'fontSize':'11px'
    }
  }
}%%
     
graph LR
    A[bla] 
    B[bloob] 
   
    A --> B

Looks like there are a set of fairly well-defined classes, you could include your own css file in the Editor with overrides I think.

Example:

rect.basic.label-container {
    fill: red !important;
}

Somehow I cannot include an image (get an error).

I encounter some weird validation error that I cannot comprehend, it worked fine in previous version 3.0.1:

const options = {
    year: "numeric",
    day: "numeric",
    month: '2-digit',
    hour: "numeric",
    minute: "numeric"
};

const timestamp = new Date().toLocaleString("nl-NL", options)

It does not accept the options with the following message:

No overload matches this call.
  Overload 1 of 3, '(locales?: LocalesArgument, options?: DateTimeFormatOptions): string', gave the following error.
    Argument of type '{ year: string; day: string; month: string; hour: string; minute: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'.
      Types of property 'year' are incompatible.
        Type 'string' is not assignable to type '"numeric" | "2-digit"'.
  Overload 2 of 3, '(locales?: string | string[], options?: DateTimeFormatOptions): string', gave the following error.
    Argument of type '{ year: string; day: string; month: string; hour: string; minute: string; }' is not assignable to parameter of type 'DateTimeFormatOptions'.(2769)

How can I make this work ?

Good catch. There seems to be an error in Monaco that sets that to an error even though, if you deploy and run, it actually works just fine. But the error marks the function node as being in error of course.

@bakman2 please raise issues on github with the details - otherwise things may get missed.

Great! Node-RED update! Thx, thx!

Is het possible to update the NodeJS versions used in the docker-releases (see table)?

  • Add containers based on NodeJS v20. (Containers with NodeJS v14 can be removed).
  • Have the default containers be based on NodeJS v18 in stead of NodeJS v16.

Adding NodeJS v20 would be in line with the advise to use v18 or v20. And we don't need to wait for Node-RED v4.0 - which will not work with NodeJS v16 - to have the default container already move to NodeJS v18.

Thx, already to hardillb.

PS: I ask it here, because it was asked in the issue template not to raise an issue but post it here. If I am wrong, sorry, be nice to me :-).

We aren't going to change the default container's base node.js version until Node-RED 4.0 - as that would be a breaking change for anyone pulling latest.

We can certainly look at adding Node20 to the build matrix of 3.1.0.

1 Like

I understand. Thx.

This is a typescript oddity. It happened before and i raised an issue and the explanation was given, but I cannot find it for the life of me!

There are a number of ways to bypass this.

  1. add a compiler directive in settings.js to ignore error code 2769 (sledgehammer)

  2. add a local ignore (better)
    image

  3. add a type hint (best)
    image

option 3 ensures the options object is valid

This works as well:

const timestamp = new Date().toLocaleString("nl-NL", {
    year: "numeric",
    day: "numeric",
    month: '2-digit',
    hour: "numeric",
    minute: "numeric"
})

Indeed I found several references to typescript.
Opened v3.1 Monaco validation failed while no error reported in 3.0.1 · Issue #4341 · node-red/node-red · GitHub
In case it can be captured in NR.

Monaco/VScode's TypeScript checker is especially brain-dead sometimes. I hit these issues so often that I commonly have to turn it off.

Hi I upgraded my docker version to 3.1.0 and it removed every node I had installed in my pallet leaving just Node-Red I have tried to re-add them but the install fails. I don't know what to do now I'm hoping I haven't just lost 18 months of work? Has anyone else had this happen, I don't see any mention of it anywhere?

Will V4.0 correct this?

Welcome to the forum @RedBart

What error are you seeing when you try to install them?

Surely you backed up your flows before attempting an upgrade?

Btw, updating a docker image would not affect the bound data directory - assuming you had a bound data directory and weren't storing data inside the container?

Hi Steve, yes I have a daily backup of my flows but in fact the flows are intact but just showing the missing nodes with dotted red lines. I think that if I can re-install the nodes it will burst into life again. I just wanted to understand what had happened really before I started changing or overwriting from a backup from a previous version.

1 Like

Hi Colin, this is all I get in the docker log...

18 Sep 07:24:31 - [info] Installing module: node-red-contrib-bigtimer, version: 2.8.5

18 Sep 07:24:43 - [info] Installed module: node-red-contrib-bigtimer
18 Sep 07:24:43 - [warn] Installation of module node-red-contrib-bigtimer failed:

18 Sep 07:24:43 - [warn] ------------------------------------------
18 Sep 07:24:43 - [warn] undefined
18 Sep 07:24:43 - [warn] ------------------------------------------
Error: Install failed

at /usr/src/node-red/node_modules/@node-red/registry/lib/installer.js:285:25
at processTicksAndRejections (node:internal/process/task_queues:96:5)
18 Sep 07:24:43 - [error] Error: Install failed

18 Sep 09:48:29 - [info] Installing module: node-red-contrib-remote, version: 1.5.0

18 Sep 09:48:39 - [info] Installed module: node-red-contrib-remote
18 Sep 09:48:39 - [warn] Installation of module node-red-contrib-remote failed:

18 Sep 09:48:39 - [warn] ------------------------------------------
18 Sep 09:48:39 - [warn] undefined
18 Sep 09:48:39 - [warn] ------------------------------------------
Error: Install failed

at /usr/src/node-red/node_modules/@node-red/registry/lib/installer.js:285:25
at runMicrotasks ()
at processTicksAndRejections (node:internal/process/task_queues:96:5)
18 Sep 09:48:39 - [error] Error: Install failed

Open a shell in the container, go to your node-red folder (where the flows file is) and run
npm install node-red-contrib-bigtimer
and paste the result here.

Hi Colin,

Firstly thank you so much for assisting me with this, I have a server running the docker and I am looking into how to do what you suggested here, at the moment I open a shell console via the GUI but it does not allow me to enter any commands. I have a guy who set the server up and is better at UnRaid and Unix than I am so I’ll ask him how to do that and get right back to you as soon as I can.

Cheers,

Nigel R

Hi Colin,

I did that and it appeared to install BigTimer rather than fail - but when I went into NodeRed it still wasn’t there. I had to do that in Chrome because in Safari I cannot type into the console or the terminal windows anymore!

So I then opened NodeRed in Chrome and I found that I could install the BigTimer node from the Pallet dialogue so it appears that NodeRed no longer functions correctly in Safari and the install did delete all of my Pallet nodes. However I can now re-install them all (slowly) using Chrome.

Phew - thanks again for the pointers.

Nigel R