Module Patterns

ES Modules (ESM)

export const fn = () => {}Named export
export default class {}Default export
import { fn } from './mod.js'Named import
import mod from './mod.js'Default import
import('./mod.js').then(m => m.fn())Dynamic import (lazy)

CommonJS (Node.js)

module.exports = { fn }Export
exports.fn = fnNamed export shorthand
const { fn } = require('./mod')Destructured require
const mod = require('./mod')Import module

Interop

import mod from './cjs.js'ESM importing CJS default
createRequire(import.meta.url)CJS require in ESM context
package.json: type: moduleEnable ESM in Node.js