# Can I use ES Modules?

**URL:** <https://community.homey.app/t/can-i-use-es-modules/75540>\
**Category:** Developers\
**Created:** [January 24, 2023, 4:33pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540 "2023-01-24T16:33:26Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kraineff](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kraineff/32/47228_2.png) [@Kraineff](https://community.homey.app/u/Kraineff)\
**Post date:** [January 24, 2023, 4:33pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540/1 "2023-01-24T16:33:26Z")

</div>

Is it possible to use ES Modules and how?

---

<div class="post-metadata">

**Author:** ![robertklep](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robertklep/32/160628_2.png) [@robertklep](https://community.homey.app/u/robertklep)\
**Post date:** [January 24, 2023, 5:54pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540/2 "2023-01-24T17:54:33Z")

</div>

Sort of:

```auto
const Homey = require('homey');

module.exports = class MyApp extends Homey.app {
  async onInit() {
    this.myModule = await import('./my-module.mjs');
  }
}

```

---

<div class="post-metadata">

**Author:** ![Kraineff](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kraineff/32/47228_2.png) [@Kraineff](https://community.homey.app/u/Kraineff)\
**Post date:** [January 24, 2023, 11:14pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540/3 "2023-01-24T23:14:18Z")

</div>

Thank you! Yeah that works, but unfortunately not works with TypeScript, because when Homey make build Typescript replaces import() to require(), how it can be fixed?

---

<div class="post-metadata">

**Author:** ![Kraineff](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kraineff/32/47228_2.png) [@Kraineff](https://community.homey.app/u/Kraineff)\
**Post date:** [January 24, 2023, 11:45pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540/4 "2023-01-24T23:45:23Z")

</div>

I would like to use CommonJS modules as well as one ES module together, using Typescript, what should I add to tsconfig file?

---

<div class="post-metadata">

**Author:** ![robertklep](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robertklep/32/160628_2.png) [@robertklep](https://community.homey.app/u/robertklep)\
**Post date:** [January 25, 2023, 6:33am UTC](https://community.homey.app/t/can-i-use-es-modules/75540/5 "2023-01-25T06:33:20Z")

</div>

> **[Documentation - Modules](https://www.typescriptlang.org/docs/handbook/2/modules.html#commonjs-and-es-modules-interop)**
>
> How JavaScript handles communicating across file boundaries.

---

<div class="post-metadata">

**Author:** ![Kraineff](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/kraineff/32/47228_2.png) [@Kraineff](https://community.homey.app/u/Kraineff)\
**Post date:** [January 25, 2023, 9:06pm UTC](https://community.homey.app/t/can-i-use-es-modules/75540/6 "2023-01-25T21:06:37Z")

</div>

Yes, I know thank you, but I’m always not very good with the TS setting, so could you suggest ready-made values for “module”:

---

<div class="post-metadata">

**Author:** ![robertklep](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/robertklep/32/160628_2.png) [@robertklep](https://community.homey.app/u/robertklep)\
**Post date:** [January 26, 2023, 6:45am UTC](https://community.homey.app/t/can-i-use-es-modules/75540/7 "2023-01-26T06:45:35Z")

</div>

I don’t develop Homey apps in TS because the SDK TS typings are pretty much broken, so I don’t have an out-of-the-box example for you.
