# externalModules

**URL:** <https://discourse.nodered.org/t/externalmodules/72032>\
**Category:** General\
**Tags:** function-node\
**Created:** [11 December 2022 12:49 UTC](https://discourse.nodered.org/t/externalmodules/72032 "2022-12-11T12:49:50Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![spillz](https://avatars.discourse-cdn.com/v4/letter/s/dbc845/32.png) [@spillz](https://discourse.nodered.org/u/spillz)\
**Post date:** [11 December 2022 12:49 UTC](https://discourse.nodered.org/t/externalmodules/72032/1 "2022-12-11T12:49:50Z")

</div>

Hi,  
Been trying to import external modules in function node , while many were successful some are giving "TypeError: xxxx is not a constructor"

```auto
const { DSLink } = 'dslink/js/web';

async function main() {
    let link = new DSLink('ws://localhost:8080/ws', 'json');
    link.connect();

    let { requester } = link;

    console.log(await requester.subscribeOnce('/sys/dataOutPerSecond'));
}

main();

return msg;

```

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

Any help from experts appreciated

---

<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:** [11 December 2022 12:54 UTC](https://discourse.nodered.org/t/externalmodules/72032/2 "2022-12-11T12:54:54Z")

</div>

What have you added to the Setup tab?

Your first line of code is definitely incorrect - you are assigning DSLink to be a value of the string `"dslink/js/web"` - that doesn't have any relation to an actual module.

---

<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:** [11 December 2022 13:07 UTC](https://discourse.nodered.org/t/externalmodules/72032/3 "2022-12-11T13:07:04Z")

</div>

That code example is for a web browser only.

The function node runs in NodeJS

---

<div class="post-metadata">

**Author:** ![Fabios](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/fabios/32/65315_2.png) [@Fabios](https://discourse.nodered.org/u/Fabios)\
**Post date:** [11 December 2022 13:08 UTC](https://discourse.nodered.org/t/externalmodules/72032/4 "2022-12-11T13:08:06Z")

</div>

By sdk-dslink-ts [documentation](https://www.npmjs.com/package/dslink) the first line is wrong. Should be: const {DSLink} = require('dslink/js/web'); Pls check that.

---

<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:** [11 December 2022 13:11 UTC](https://discourse.nodered.org/t/externalmodules/72032/5 "2022-12-11T13:11:19Z")

</div>

The function node runs in nodejs.

The function node does not permit `require`

that line of code is marked specifically for the browser...  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/9/a94486b7165089311431bd2b3d13be3252f0e651.png)

---

<div class="post-metadata">

**Author:** ![Fabios](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/fabios/32/65315_2.png) [@Fabios](https://discourse.nodered.org/u/Fabios)\
**Post date:** [11 December 2022 13:37 UTC](https://discourse.nodered.org/t/externalmodules/72032/6 "2022-12-11T13:37:10Z")

</div>

Sure, I missed that 🤦‍♂️ you're right. @spillz is using the browser and should use the NodeJS example instead.

---

<div class="post-metadata">

**Author:** ![spillz](https://avatars.discourse-cdn.com/v4/letter/s/dbc845/32.png) [@spillz](https://discourse.nodered.org/u/spillz)\
**Post date:** [11 December 2022 14:26 UTC](https://discourse.nodered.org/t/externalmodules/72032/7 "2022-12-11T14:26:36Z")

</div>

> [@knolleary](#):
>
> ing DSLi

```auto
// const {DSLink} = require("dslink");
const {DSLink} = require("../../js/node");

async function main() {
  let link = new DSLink('testRequester-aa-',
    {isRequester: true},['--broker','http://localhost:8181/dsbroker/conn']
  );
  await link.connect();

  let {requester} = link;

  // list for root node structure once
  console.log((await requester.listOnce('/local/Preference Service/global', 1000)).children);

}

main();

```

Well i got this running in node.js  
[https://github.com/IOT-DSA/sdk-dslink-ts/blob/master/example/nodejs-requester/list.js](https://github.com/IOT-DSA/sdk-dslink-ts/blob/master/example/nodejs-requester/list.js)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [9 February 2023 14:26 UTC](https://discourse.nodered.org/t/externalmodules/72032/8 "2023-02-09T14:26:52Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
