Skip to content

Loads ESM packages in CommonJS projects

Notifications You must be signed in to change notification settings

luicfrr/commonjs-esm-loader

Repository files navigation

📚 Introduction

Trying to load a fresh installed package and got the error cannot use import statement outside a module? This packaged is the sollution for your problems.

I've created it after Googling a lot trying to find a sollution on how to import an ESM package in a big and consolidated CommonJS project... Migrate whole project to ESM architecture just to use a single package was not an option.

🧰 Installation

To install, you can use npm or yarn:

npm install commonjs-esm-loader
# or
yarn add commonjs-esm-loader

💡 Usage

OBS: Using pdfreader package as example because it was the package that makes me create this project, but it works with any ESM package you want to load.

JavaScript

import { importEsmModule } from 'commonjs-esm-loader'

async function myFunction() {
  const { PdfReader } = await importEsmModule( 'pdfreader' )
  // your package is loaded and ready to use :)
  new PdfReader( ... )
}

TypeScript

import { importEsmModule } from 'commonjs-esm-loader'
// load package type so intellisense can work
import type PdfReaderType from 'pdfreader'

async function myFunction() {
  const { PdfReader } = await importEsmModule<typeof PdfReaderType>( 'pdfreader' )
  // your package is loaded, typed and ready to use :)
  new PdfReader( ... )
}

👷 Built With

  • TypeScript - Open-source language which builds on JavaScript

📚 Author