# How to quote a config node

**URL:** <https://discourse.nodered.org/t/how-to-quote-a-config-node/84378>\
**Category:** Developing Nodes\
**Created:** [8 January 2024 05:21 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378 "2024-01-08T05:21:34Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 05:21 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/1 "2024-01-08T05:21:34Z")

</div>

Hi,  
I tried config node following [Configuration nodes : Node-RED (nodered.org)](https://nodered.org/docs/creating-nodes/config-nodes), I wrote remote-server.html

// remote-server.html

```auto
<script type="text/javascript">
    RED.nodes.registerType('remote-server',{
        category: 'config',
        defaults: {
            host: {value:"localhost",required:true},
            port: {value:1234,required:true,validate:RED.validators.number()},
        },
        label: function() {
            return this.host+":"+this.port;
        }
    });
</script>

<script type="text/html" data-template-name="remote-server">
    <div class="form-row">
        <label for="node-config-input-host"><i class="fa fa-bookmark"></i> Host</label>
        <input type="text" id="node-config-input-host">
    </div>
    <div class="form-row">
        <label for="node-config-input-port"><i class="fa fa-bookmark"></i> Port</label>
        <input type="text" id="node-config-input-port">
    </div>
</script>

```

and remote-server.js

```auto
module.exports = function(RED) {
    function RemoteServerNode(n) {
        RED.nodes.createNode(this,n);
        this.host = n.host;
        this.port = n.port;
    }
    RED.nodes.registerType("remote-server",RemoteServerNode);
}

```

and I want to quote the remote server node in test node, here are the .js and .html file:  
test.html

```auto
<script type="text/javascript">
    RED.nodes.registerType('test',{
        category: 'function',
        color: '#a6bbcf',
        defaults: {
            server: {value:"", type:"remote-server"}
        },
        inputs: 1,
        outputs: 1,
        icon: "file.svg",
        label: function() {
            return this.name||"test";
        }
</script>

<script type="text/html" data-template-name="test">
     <div class="form-row">
         <label for="node-input-server"><i class="fa fa-tag"></i> Server</label>
         <input type="text" id="node-input-server">
     </div>
</script>

<script type="text/html" data-help-name="test">
    <p>A simple node for configuring
</script>

```

test.js

```auto
module.exports = function(RED) {
    function TestNode(config) {
        RED.nodes.createNode(this,config);
        var node = this;
       
        this.server = RED.nodes.getNode(config.server);
        node.log(this.server);
        node.log("host =");
        node.log(this.server.host);
        node.log("port =");
        node.log(this.server.port);
        node.on('input', function(msg) {
            node.send(msg);
        });
    }
 RED.nodes.registerType("test",TestNode);

```

When I started node-red, it showed that this.server is null. How can i use the config node ? Thanks.

---

<div class="post-metadata">

**Author:** ![ralphwetzel](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ralphwetzel/32/53713_2.png) [@ralphwetzel](https://discourse.nodered.org/u/ralphwetzel)\
**Post date:** [8 January 2024 06:49 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/2 "2024-01-08T06:49:46Z")

</div>

Hello @abu !  
Welcome to this forum!

> [@abu](#):
>
> When I started node-red, it showed that this.server is null.

As the flow is still in the process of being created, your config node might not exist so far.  
Have you tried to get it in `node.on('input', ... )`? There it should be setup & present.

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 08:11 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/3 "2024-01-08T08:11:27Z")

</div>

I tried in node.on, here is the code:

```auto
 node.on('input', function(msg) {
            this.server = RED.nodes.getNode(config.server);
            node.log(this.server);
            if( this.server )
            {
                node.log("host =");
                node.log(this.server.host);
                node.log("port =");
                node.log(this.server.port);
            }

            node.send(msg);
        });

```

and this.server is still null. And in the edit page, the input box of server has no select values as a down list in the box.  
 ![17047031401796](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/a/1a9155679d2164fbeaab36f9067ff8b55c5c067d.png)

---

<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:** [8 January 2024 08:38 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/4 "2024-01-08T08:38:37Z")

</div>

> [@ralphwetzel](#):
>
> the flow is still in the process of being created, your config node might not exist so far.

The runtime does try to ensure all config nodes are started before any flow nodes are created.

@abu have to logged the value of `config.server` to ensure it's actually set to the id of the config node you expect?

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 08:45 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/5 "2024-01-08T08:45:52Z")

</div>

Thanks knolleary,  
I logged config.server and found it was empty.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 08:52 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/6 "2024-01-08T08:52:39Z")

</div>

> [@abu](#):
>
> the input box of server has no select values

Fixed?

> [@abu](#):
>
> `</la`

Maybe the code pasted but it's `</label>`

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 08:59 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/7 "2024-01-08T08:59:41Z")

</div>

Hi GogoVega,  
The \</la has been changed to `</lable>`, the input box of server has no select values, and config.server is empty.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 09:03 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/8 "2024-01-08T09:03:29Z")

</div>

You reversed the place of the second `l` with `e` =\> `label` instead of `lable`  
Don't forget to reload/refresh your browser after restarting NR

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 09:11 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/9 "2024-01-08T09:11:47Z")

</div>

Hi GogoVega,  
Sorry for that, it is a spelled fault. In the code, it is label, not lable. and thanks for pointing out that.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 09:39 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/10 "2024-01-08T09:39:30Z")

</div>

No worries,  
I don't see anything wrong. Have you refreshed your browser?

This must be done after each restart of NR in order to load the new code into the browser

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 09:46 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/11 "2024-01-08T09:46:10Z")

</div>

I refreshed the browser, and and node.log(config.server) is empty.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 09:48 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/12 "2024-01-08T09:48:34Z")

</div>

The problem comes from the input - is it formatted correctly (select input with options)?

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 09:59 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/13 "2024-01-08T09:59:40Z")

</div>

I think that the select options of server are from node remote-server, because i quote it as:

```auto
defaults: {
            server: {value:"", type:"remote-server"}
        },

```

Is that correct ?

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 10:02 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/14 "2024-01-08T10:02:46Z")

</div>

Yes it's correct

I mean this:

> [@abu](#):
>
> ![17047031401796](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/a/1a9155679d2164fbeaab36f9067ff8b55c5c067d.png)

should look like this:

 ![Capture d’écran 2024-01-08 à 11.02.01](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/3/a/3a63ac5d53d2b135f5be343e7af2af40dc43af95.png)

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [8 January 2024 10:07 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/15 "2024-01-08T10:07:25Z")

</div>

Yes, the input box of server should have select options, but now the input box has no select options at all, and I can not figure out why.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/totallyinformation/32/31_2.png) [@TotallyInformation](https://discourse.nodered.org/u/TotallyInformation)\
**Post date:** [8 January 2024 12:59 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/16 "2024-01-08T12:59:16Z")

</div>

Do you have to declare config nodes in package.json like other nodes? Can't remember.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [8 January 2024 13:24 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/17 "2024-01-08T13:24:26Z")

</div>

Yes, same way

Can you try `RED.nodes.getType("remote-server")` in the browser console

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [9 January 2024 01:07 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/18 "2024-01-09T01:07:54Z")

</div>

> [@GogoVega](#):
>
> RED.nodes.getType("remote-server")

I added `RED.nodes.getType("remote-server")` to test.js, it showed:  
 ![1704761758221](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/8/a/8a19e4c3b6135bec2298a77ec3ef78c3c65dc029.png)

and I added a function node in browser console, like

 ![17047620613288](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/7/a/7a8e15f6bdfc3f852a16c0dad9f9884841086cb5.png)

after clicking the inject node, the browser console showed

function : (error)  
"TypeError: Cannot read properties of undefined (reading 'getType')"

and the function node just like this:

```auto
msg.payload = RED.nodes.getType("remote-server");
return msg;

```

it seems that `RED.nodes.getType("remote-server")` is not defined in node-red.

---

<div class="post-metadata">

**Author:** ![abu](https://avatars.discourse-cdn.com/v4/letter/a/f19dbf/32.png) [@abu](https://discourse.nodered.org/u/abu)\
**Post date:** [9 January 2024 01:29 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/19 "2024-01-09T01:29:05Z")

</div>

> [@TotallyInformation](#):
>
> package.json

Hi,  
I added `remote-server` to package.json, and fixed the issue. Thanks for your help.

---

<div class="post-metadata">

**Author:** ![GogoVega](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/gogovega/32/71313_2.png) [@GogoVega](https://discourse.nodered.org/u/GogoVega)\
**Post date:** [9 January 2024 10:41 UTC](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378/20 "2024-01-09T10:41:06Z")

</div>

> [@abu](#):
>
> is not defined in node-red.

I said in the browser console but regardless the goal was to check that your config node has been loaded.

[Next page](https://discourse.nodered.org/t/how-to-quote-a-config-node/84378.md?page=2)
