# 🎉 Node-RED 2.0 Released

**URL:** <https://discourse.nodered.org/t/node-red-2-0-released/48647>\
**Category:** News\
**Created:** [20 July 2021 10:45 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647 "2021-07-20T10:45:29Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![Kazzy](https://avatars.discourse-cdn.com/v4/letter/k/34f0e0/32.png) [@Kazzy](https://discourse.nodered.org/u/Kazzy)\
**Post date:** [20 July 2021 21:49 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/21 "2021-07-20T21:49:21Z")

</div>

can't seem to get Monaco editor to work. when i add the line it just stops Node-red from starting up.

in the Settings.JS file old one I guess at the bottom I have

```auto
// customising the editor
editorTheme: {
    projects: {
        enabled: false
    }
}

```

so made it then look like

```auto
// customising the editor
editorTheme: {
    codeEditor: {
        lib: "monaco"
    }
    projects: {
        enabled: false
    }
}

```

but it just crashes with

```auto
ul 20 22:43:38 DietPi node-red[20976]: at Module._compile (node:internal/modules/cjs/loader:1072:27)
Jul 20 22:43:38 DietPi node-red[20976]: at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
Jul 20 22:43:38 DietPi node-red[20976]: at Module.load (node:internal/modules/cjs/loader:973:32)
Jul 20 22:43:38 DietPi node-red[20976]: at Function.Module._load (node:internal/modules/cjs/loader:813:14)
Jul 20 22:43:38 DietPi node-red[20976]: at Module.require (node:internal/modules/cjs/loader:997:19)
Jul 20 22:43:38 DietPi node-red[20976]: at require (node:internal/modules/cjs/helpers:92:18)
Jul 20 22:43:38 DietPi node-red[20976]: at Object.<anonymous> (/usr/local/lib/node_modules/node-red/red.js:136:20)
Jul 20 22:43:38 DietPi node-red[20976]: at Module._compile (node:internal/modules/cjs/loader:1108:14)
Jul 20 22:43:38 DietPi node-red[20976]: at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)

```

so what did i miss? i also tried adding a , after the } and before projects:

if i completely remove the Projects block then it loads up fine.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [20 July 2021 22:04 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/22 "2021-07-20T22:04:02Z")

</div>

> [@Kazzy](#):
>
> ```auto
> codeEditor: {
> lib: "monaco"
> }
> projects: {
> enabled: false
> }
> 
> ```

You need a comma after the middle curly bracket (what you have is not valid syntax...

```auto
    codeEditor: {
        lib: "monaco"
    },
    projects: {
        enabled: false
    }

```

---

<div class="post-metadata">

**Author:** ![SonoraTechnical](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/sonoratechnical/32/20033_2.png) [@SonoraTechnical](https://discourse.nodered.org/u/SonoraTechnical)\
**Post date:** [20 July 2021 22:14 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/23 "2021-07-20T22:14:18Z")

</div>

It's working well for me. all of the i2c libraries/nodes that I use are good. Running on a RaspberryPi4B. I'm on Node-RED 2.0.1 ...

On my PC used for editing, I'm running one of the Windows 11 Beta Previews (anti-climatic.... it's like a Windows98 to Windows98SecondEdition kind of upgrade really).. Anyway... Chrome seems to work fine and I'm able to edit all of my NodeRed flows just the same....

---

<div class="post-metadata">

**Author:** ![Kazzy](https://avatars.discourse-cdn.com/v4/letter/k/34f0e0/32.png) [@Kazzy](https://discourse.nodered.org/u/Kazzy)\
**Post date:** [20 July 2021 22:24 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/24 "2021-07-20T22:24:11Z")

</div>

Thanks Steve... oddly i didnt try it with the comma there but must have messed something else in the process. it working now though.

---

<div class="post-metadata">

**Author:** ![alex88](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/alex88/32/55523_2.png) [@alex88](https://discourse.nodered.org/u/alex88)\
**Post date:** [20 July 2021 23:07 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/25 "2021-07-20T23:07:39Z")

</div>

Saw your youtube video @knolleary, love the work!

Please keep it coming.

---

<div class="post-metadata">

**Author:** ![nidaven](https://avatars.discourse-cdn.com/v4/letter/n/b3f665/32.png) [@nidaven](https://discourse.nodered.org/u/nidaven)\
**Post date:** [21 July 2021 01:07 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/26 "2021-07-21T01:07:58Z")

</div>

I love the new update, especially the monaco editor. Great work.

@knolleary However, I am encountering a recurring issue. When trying to open a library in the function after multiple times, the workspace freezes.

For example, I load a function from the library in function node A, all works fine. When I try to load a function from the library in function node B, it freezes up, and I have to reload the browser losing intermediate changes in the process.

Here's a screenshot of the frozen workspace

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/d/b/dbcadea0cc79090d3648112e0d35789cc29dee81.png)

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [21 July 2021 07:08 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/27 "2021-07-21T07:08:18Z")

</div>

@knolleary I took a look at this one. The error is occurring [here](https://github.com/node-red/node-red/blob/c9597b94474ff55f46b300f9c1e78bd1d06fba3b/packages/node_modules/%40node-red/editor-client/src/js/ui/library.js#L823)

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/b/9/b9a61311a6c0cb2d509154d772bd86b8139654cf.png)

I forget now if `remove()` was ever a function (should be `destroy()`) or if I need to handle calls to `remove()` in the editor code?

The quick and simple fix is to change that line to `libraryEditor.destroy();`

PS: It was me who wrote that line (my bad)

---

<div class="post-metadata">

**Author:** ![AsHex\_66](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ashex_66/32/31151_2.png) [@AsHex\_66](https://discourse.nodered.org/u/AsHex_66)\
**Post date:** [21 July 2021 07:38 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/28 "2021-07-21T07:38:10Z")

</div>

All,

Great work, love the new features.  
Question I have though, is this version backwards compatible with V1?  
Reason I am asking, I have several projects running on different sites, that have NR V1. I have access to them via a VPN, but I cannot upgrade the Node-Red to V2. I can change the project itself via SSH. So if I make changes in my projects with NR V2 and then copy the project in a machine running NR V1, will this break? I make the assumption that it will not break, as all is based on NodeJS and NR is the programming/GUI interface, but assumptions make you look like .... well, you know. 🙂

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [21 July 2021 07:48 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/29 "2021-07-21T07:48:59Z")

</div>

the main breaking change was dropping support for nodejs 8 and 10 which are out of support anyway - so going forwards there may well be code that starts to use features in node12 and 14 that aren't available in node8 and 10 and will thus not work. If you are already using Node12 or better in your deployments then you should be OK - but as with all things it is down to you to test and verify that.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [21 July 2021 08:07 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/30 "2021-07-21T08:07:34Z")

</div>

> [@Steve-Mcl](#):
>
> I forget now if `remove()` was ever a function (should be `destroy()` ) or if I need to handle calls to `remove()` in the editor code?

I don't see any references to `.remove()` in 1.3.5 - it must have been something you added. I'll make the change unless you have a PR on the way?

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [21 July 2021 08:08 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/31 "2021-07-21T08:08:48Z")

</div>

> [@AsHex\_66](#):
>
> Question I have though, is this version backwards compatible with V1?

As long as the flows you create only use features of nodes that are also available in 1.x, then you should be fine copying the flow json from 2.x to 1.x.

---

<div class="post-metadata">

**Author:** ![AsHex\_66](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ashex_66/32/31151_2.png) [@AsHex\_66](https://discourse.nodered.org/u/AsHex_66)\
**Post date:** [21 July 2021 08:32 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/32 "2021-07-21T08:32:21Z")

</div>

> [@knolleary](#):
>
> As long as the flows you create only use features of nodes that are also available in 1.x, then you should be fine copying the flow json from 2.x to 1.x

So, to be clear in my mind, as long as the nodes I am using where there in V1 and where not especially made for V2, all will be well. So any new updates of nodes can be a potential problem, for example SQLite or Modbus, if they go through a revision change I need to contact the provider, to ensure they are compatible. Standard included nodes of NR are compatible?

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [21 July 2021 08:41 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/33 "2021-07-21T08:41:27Z")

</div>

> [@knolleary](#):
>
> we keep a list in `~/.node-red/.config.modules.json`

When creating node-RED system backup routines, is it necessary (or even desirable) to include `.config.modules.json` in the backup list?  
(I want to keep my [node-RED Backup Flow - #22 by Paul-Reed](https://discourse.nodered.org/t/node-red-backup-flow/25033/22) project up to date)

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [21 July 2021 08:46 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/34 "2021-07-21T08:46:57Z")

</div>

It is the only record of what extra modules the runtime has installed for you. At some point in the future, if we have a UI to help manage those modules, then it will use that list to limit what it lets you remove.

So it is probably worth backing up, although not essential.

---

<div class="post-metadata">

**Author:** ![get\_joe](https://avatars.discourse-cdn.com/v4/letter/g/35a633/32.png) [@get\_joe](https://discourse.nodered.org/u/get_joe)\
**Post date:** [21 July 2021 09:01 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/35 "2021-07-21T09:01:22Z")

</div>

Encountered a issue. I'm using the monaco editor, and every time i try to use JSONata editor or the JSON editor, it wont let me type stuff.

How to reproduce:

1. Open up an inject or change node.
2. Change output to either JSONata or JSON
3. Open up the full editor and try to write something.

---

<div class="post-metadata">

**Author:** ![knolleary](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/knolleary/32/3_2.png) [@knolleary](https://discourse.nodered.org/u/knolleary)\
**Post date:** [21 July 2021 09:01 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/36 "2021-07-21T09:01:47Z")

</div>

@get_joe using what browser?

---

<div class="post-metadata">

**Author:** ![get\_joe](https://avatars.discourse-cdn.com/v4/letter/g/35a633/32.png) [@get\_joe](https://discourse.nodered.org/u/get_joe)\
**Post date:** [21 July 2021 09:04 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/37 "2021-07-21T09:04:49Z")

</div>

Chrome, ver. 92.0.4515.107. I don't see any errors in the logs btw.

---

<div class="post-metadata">

**Author:** ![get\_joe](https://avatars.discourse-cdn.com/v4/letter/g/35a633/32.png) [@get\_joe](https://discourse.nodered.org/u/get_joe)\
**Post date:** [21 July 2021 09:33 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/38 "2021-07-21T09:33:42Z")

</div>

I found out that this issue only exist on one of my two Node-RED instances. I'm not able to write in function nodes either. @knolleary

---

<div class="post-metadata">

**Author:** ![nidaven](https://avatars.discourse-cdn.com/v4/letter/n/b3f665/32.png) [@nidaven](https://discourse.nodered.org/u/nidaven)\
**Post date:** [21 July 2021 09:50 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/39 "2021-07-21T09:50:56Z")

</div>

Thanks for looking into it Steve.

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [21 July 2021 09:52 UTC](https://discourse.nodered.org/t/node-red-2-0-released/48647/40 "2021-07-21T09:52:10Z")

</div>

> [@get\_joe](#):
>
> I don't see any errors in the logs btw

Did you look in chrome console?

F12 → console

[Previous page](https://discourse.nodered.org/t/node-red-2-0-released/48647.md?page=1)

[Next page](https://discourse.nodered.org/t/node-red-2-0-released/48647.md?page=3)
