canirequire › Dual (CommonJS + ESM) › nodemailer
Is nodemailer ESM-only? Can you require() it?
Easy as cake e-mail sending from your Node.js applications
Last verified Sep 9, 2026 against nodemailer@10.0.1. JSON
Dual (CommonJS + ESM) Dual package — both require() and import work
nodemailer publishes both a CommonJS entry and a native ESM entry (ESM added in 10.0.0). require("nodemailer") and import "nodemailer" both work on every supported Node.js version and in Bun.
Does nodemailer@10.0.1 actually load? Runtime test results
Installed and executed on Sep 9, 2026 with require("nodemailer") from a CommonJS file and import "nodemailer" from an ES module.
| Runtime | require("nodemailer") | import "nodemailer" |
|---|---|---|
| Node.js 18 | ✓ works | ✓ works |
| Node.js 20 | ✓ works | ✓ works |
| Node.js 22 | ✓ works | ✓ works |
| Node.js 24 | ✓ works | ✓ works |
| Node.js 26 | ✓ works | ✓ works |
| Bun 1.4 | ✓ works | ✓ works |
How to import nodemailer
ES modules (import)
import nodemailer from "nodemailer";CommonJS (require)
const nodemailer = require("nodemailer");Module format by version
Derived from the type, main and exports fields of every stable release on npm (280 versions; the newest 60 shown).
| Versions | Format | First published |
|---|---|---|
| 10.0.0 – 10.0.1 | Dual (CommonJS + ESM) | Sep 4, 2026 |
| 6.7.5 – 9.1.1 | CommonJS | May 4, 2022 |
Frequently asked
Is nodemailer ESM-only?
nodemailer@10.0.1 ships CommonJS and ESM builds. nodemailer publishes both a CommonJS entry and a native ESM entry (ESM added in 10.0.0). require("nodemailer") and import "nodemailer" both work on every supported Node.js version and in Bun.
Can I require nodemailer?
Yes. nodemailer ships a CommonJS entry, so require("nodemailer") works on every Node.js version, alongside the native ESM entry for import.
Does nodemailer work in Bun?
Yes. import "nodemailer" loaded successfully in Bun 1.4 on Sep 9, 2026.
Does nodemailer ship TypeScript types?
Yes. nodemailer bundles its own type declarations; no @types package is needed.
Links
Other dual (commonjs + esm) packages
- minimatch 10.2.6Dual
- brace-expansion 5.0.9Dual
- lru-cache 11.5.2Dual
- glob 13.0.6Dual
- eslint-visitor-keys 5.0.1Dual
- yallist 5.0.0Dual
- balanced-match 4.0.4Dual
- js-yaml 5.4.1Dual
Similar popularity
- make-fetch-happen 16.0.1CommonJS
- http-proxy-middleware 4.2.0ESM-only
- cross-env 10.1.0ESM-only
- query-string 9.5.1ESM-only
- redux-thunk 3.1.0Dual
- jest-environment-jsdom 30.5.1Dual
- webpack-dev-middleware 8.3.0CommonJS
- babel-loader 10.1.1CommonJS