2019-07-22
1578
#node
Brian De Sousa
3860
Jul 22, 2019 â‹… 5 min read

ES modules in Node.js 12, from experimental to release

Brian De Sousa Geek. Dad. Husband. Developer. Traveler.

Recent posts:

Building A Serverless Postgres-Powered GraphQL API With Neon Db, Prisma Orm, And Apollo Server

Building a serverless GraphQL API with NeonDB and Prisma

Combine NeonDB, Prisma ORM, and Apollo Server within a serverless architecture to achieve a fully functional and scalable GraphQL API.

Nitish Sharma
Feb 8, 2024 â‹… 12 min read
Exploring Interaction To Next Paint, A New Core Web Vital

Exploring Interaction to Next Paint, a new Core Web Vital

Interaction to Next Paint was added to Google’s Core Web Vitals to provide a more comprehensive assessment of website interactivity.

Rahul Chhodde
Feb 7, 2024 â‹… 6 min read
Starlight Vs. Docusaurus For Building Documentation

Starlight vs. Docusaurus for building documentation

Explore Docusaurus and Starlight for building and customizing documentation websites, comparing their features such as sidebars, light/dark mode, and tabs.

Kapeel Kokane
Feb 6, 2024 â‹… 10 min read
Comparing Typescript State Management Solutions

Comparing TypeScript state management solutions

Dealing with state management in TypeScript provides benefits like type safety, code formatting, and error management.

Rashedul Alam
Feb 2, 2024 â‹… 17 min read
View all posts

5 Replies to "ES modules in Node.js 12, from experimental to release"

  1. Thank you for clarification! And one question is still not covered: why .mjs? Does it mean we should have both identical. js and mjs files in a package for browsers/babel and node?

  2. From what I understand, NodeJS developers considered several options for being able to suppor ES modules alongside existing CommonJS modules including not using the .mjs extension. At the end of the day, I believe the decision was made to use the .mjs extension because it was a simply way to identify an ES module over plain JavaScript or CommonJS modules. It also sort of fits in the JavaScript community with other frameworks and tools using file extensions as meta-data (ex. typescript uses .ts, react has .jsx, etc.). Here’s a great write up on other options that were considered: https://2ality.com/2017/05/es-module-specifiers.html.

    Browsers will be able to load modules from .mjs files as well but the .mjs extension will not identify that a script contains an ES module. In the browser, you’ll need to include the type=”module” attribute on your script tags, for example:

    http://./script.mjs

Leave a Reply