# ReferenceError: SunCalc is not defined

**URL:** https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540
**Category:** General
**Created:** [6 December 2018 18:35 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540 "2018-12-06T18:35:17Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![or78rXxZ](https://avatars.discourse-cdn.com/v4/letter/o/71e660/32.png) [@or78rXxZ](https://discourse.nodered.org/u/or78rXxZ)
#### Post date: [6 December 2018 18:35 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/1 "2018-12-06T18:35:17Z")

</div>

I really have no idea what I am doing 🙂  
I would like to use suncalc to get the sunset and sunrise times for a day.  
I installed suncalc in node red and npm. The sunrise node in node red works ok. I added SunCalc:require("suncalc") to my settings .js and tried calling SunCalc in my function node but all I get is "ReferenceError: SunCalc is not defined". Could someone shed a little light here?  
Thanks

---

<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: [6 December 2018 18:40 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/2 "2018-12-06T18:40:57Z")

</div>

Why not use the node-red-node-suncalc node direct ? Check the [flows.nodered.org](http://flows.nodered.org) website

---

<div class="post-metadata">

### Author: ![or78rXxZ](https://avatars.discourse-cdn.com/v4/letter/o/71e660/32.png) [@or78rXxZ](https://discourse.nodered.org/u/or78rXxZ)
#### Post date: [6 December 2018 19:00 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/3 "2018-12-06T19:00:42Z")

</div>

That would be great if I knew how 🙂  
How do I get the sunset and sunrise time from node-red-node-suncalc?

---

<div class="post-metadata">

### Author: ![ghayne](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ghayne/32/39_2.png) [@ghayne](https://discourse.nodered.org/u/ghayne)
#### Post date: [6 December 2018 19:06 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/4 "2018-12-06T19:06:12Z")

</div>

By reading the node documentation, searching the forum.

---

<div class="post-metadata">

### Author: ![or78rXxZ](https://avatars.discourse-cdn.com/v4/letter/o/71e660/32.png) [@or78rXxZ](https://discourse.nodered.org/u/or78rXxZ)
#### Post date: [6 December 2018 19:36 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/5 "2018-12-06T19:36:00Z")

</div>

Thank you, very helpful

---

<div class="post-metadata">

### Author: ![cflurin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cflurin/32/29_2.png) [@cflurin](https://discourse.nodered.org/u/cflurin)
#### Post date: [6 December 2018 19:49 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/6 "2018-12-06T19:49:18Z")

</div>

How did you use it in your function node?

Note: [https://discourse.nodered.org/t/how-to-share-code-or-flow-json/506](https://discourse.nodered.org/t/how-to-share-code-or-flow-json/506)

---

<div class="post-metadata">

### Author: ![or78rXxZ](https://avatars.discourse-cdn.com/v4/letter/o/71e660/32.png) [@or78rXxZ](https://discourse.nodered.org/u/or78rXxZ)
#### Post date: [6 December 2018 20:21 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/7 "2018-12-06T20:21:49Z")

</div>

I tried

```auto
var times = SunCalc.getTimes(new Date(), 51.5, -0.1);

```

and

```auto
var times = global.get(SunCalc.getTimes(new Date(), 51.5, -0.1));

```

Both returned "ReferenceError: SunCalc is not defined"

---

<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: [6 December 2018 20:26 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/8 "2018-12-06T20:26:37Z")

</div>

> [@or78rXxZ](#):
>
> I added SunCalc:require("suncalc") to my settings .js and tried calling SunCalc in my function node but all I get is "ReferenceError: SunCalc is not defined". Could someone shed a little light here?

You'd need to be a bit more specific about what you've tried.

The documentation for how to add new modules to the Function node is here: [Redirecting…](https://nodered.org/docs/writing-functions#loading-additional-modules)

From what you say, I assume your `SunCalc:require("suncalc") ` line is inside the `functionGlobalContext` block in the settings file.  
I also assume you've actually installed the `suncalc ` module in `~/.node-red`.

In your Function node you would then do:

```auto
var SunCalc = global.get('SunCalc');
var times = SunCalc.getTimes(....)

```

---

<div class="post-metadata">

### Author: ![or78rXxZ](https://avatars.discourse-cdn.com/v4/letter/o/71e660/32.png) [@or78rXxZ](https://discourse.nodered.org/u/or78rXxZ)
#### Post date: [6 December 2018 20:46 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/9 "2018-12-06T20:46:27Z")

</div>

Your suggestion works, as you knew it would.  
Yes, I was attempting to follow [https://nodered.org/docs/writing-functions#loading-additional-modules](https://nodered.org/docs/writing-functions#loading-additional-modules) but zero experience with javascript and node red was killing me.  
My only programming knowledge is from 22 years of C on HP/UX.  
Thanks

---

<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 December 2018 16:19 UTC](https://discourse.nodered.org/t/referenceerror-suncalc-is-not-defined/5540/10 "2018-12-08T16:19:35Z")

</div>

If you do it that way, you don't need the node installed.

When using a node, you generally expect that the data it adds is attached to the msg object and you can then pick it up in the next node downstream. This is a generally preferred approach than adding weight to the global variable object.
