Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

489
Views
When do we need to add file extension when importing JavaScript modules?

When importing modules, I noticed sometimes imported files have their extension, example:

import { myFunc } from './foo.js';

Whereas other libraries, the imports do not:

import { myFunc } from './foo';

Is this related to ES modules vs CommonJS modules?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

The answer to this question depends on your runtime and compilation environment, and also on wether you are using ES modules (the import syntax) or CommonJS modules (the require syntax). You will find below an overview about the most common cases.

Webpack (used by create-react-app and many others tools) works with ES modules like so:

If the path has a file extension, then the file is bundled straightaway. Otherwise, the file extension is resolved using the resolve.extensions option, which tells the resolver which extensions are acceptable for resolution, e.g. .js, .jsx. More on the offical documentation.

If you are using ES modules with Node.js:

A file extension must be provided when using the import keyword to resolve relative or absolute specifiers. Directory indexes (e.g. './startup/index.js') must also be fully specified. This behavior matches how import behaves in browser environments, assuming a typically configured server.

The --experimental-specifier-resolution=[mode] flag can be used to customize the extension resolution algorithm. The default mode is explicit, which requires the full path to a module be provided to the loader. More on the official documentation.

If you are using ES modules in the browser without any compilation, there will be a request to a server to get the needed file, so you should add the extension. More on MDN's documentation.

If you are using CommonJS modules with Node.js:

If the exact filename is not found, then Node.js will attempt to load the required filename with the added extensions: .js, .json, and finally .node. More on the official documentation.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!