MODULE_NOT_FOUND Error in JavaScript (Node.js)
The MODULE_NOT_FOUND
error is a common error in Node.js that occurs when the runtime fails to locate a required module. This can happen for various reasons, including missing dependencies, incorrect paths, or misconfigured module resolutions.
Understanding the Error
When you see an error message like:
Error: Cannot find module 'express'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
at Function.Module._load (internal/modules/cjs/loader.js:667:27)
at Module.require (internal/modules/cjs/loader.js:887:19)
at require (internal/modules/cjs/helpers.js:74:18)
It indicates that Node.js is unable to find the express
module (or any other module that’s missing).
Common Causes and Fixes
1. Missing Node Modules (Dependencies Not Installed)
If you forgot to install a required package, Node.js won’t be able to find it.
Solution: Install the missing package
Run the following command to install the missing package:
npm install <package-name>
For example, if express
is missing:
npm install express
If using yarn
:
yarn add express
If using pnpm
:
pnpm add express
2. Wrong Module Name in require
or import
Node.js is case-sensitive, so ensure that the module name matches exactly.
Incorrect:
const Express = require('Express'); // Wrong capitalization
Correct:
const express = require('express');
If using ES modules (import
syntax):
Incorrect:
import express from "Express";
Correct:
import express from "express";
3. Dependency Installed Locally Instead of Globally (or Vice Versa)
Sometimes, you install a package globally, but the project expects a local installation.
Solution:
If you installed a package globally, but your script is running in a local context, install it locally:
npm install <package-name>
Alternatively, if you need it globally:
npm install -g <package-name>
Example:
npm install -g nodemon
If running nodemon
still gives a MODULE_NOT_FOUND
error, try:
npx nodemon server.js
4. node_modules
Folder Missing
If the node_modules
folder is missing (e.g., after cloning a repository), dependencies won’t be found.
Solution: Reinstall dependencies
Run:
npm install
Or:
yarn install
5. Incorrect File Path When Requiring a Local Module
If you are trying to import a local module but provide an incorrect path, the module won’t be found.
Incorrect (missing ./
for a local file):
const myModule = require('myModule');
Correct:
const myModule = require('./myModule');
If your file is inside a subfolder:
const myModule = require('./utils/myModule');
6. Wrong main
File in package.json
If you’re working with a custom module, ensure the main
entry in package.json
correctly points to the main file.
Example package.json
:
{
"name": "myModule",
"version": "1.0.0",
"main": "index.js"
}
If index.js
doesn’t exist, update the main
field to point to the correct file.
7. Circular Dependencies
If two modules depend on each other, one may not be fully loaded, causing MODULE_NOT_FOUND
.
Solution:
Refactor the code to avoid circular dependencies. Consider moving shared logic to a separate module.
8. Module Installed in Wrong Directory
Check if the package is installed in the correct directory by running:
npm list <package-name>
Example:
npm list express
If it’s not listed, install it again using:
npm install express
9. Global Packages Not in NODE_PATH
If you installed a package globally but Node.js doesn’t recognize it, ensure NODE_PATH
is correctly set.
Solution:
Find the global package location:
npm root -g
Then, add it to NODE_PATH
:
export NODE_PATH=$(npm root -g)
10. Using ES Modules Incorrectly
If you are using ES modules (import
instead of require
), ensure your package.json
contains:
{
"type": "module"
}
Also, ensure you use the correct file extension:
import express from 'express'; // Use .js extension in imports
11. Corrupted node_modules
or package-lock.json
If all else fails, your node_modules
folder or package-lock.json
may be corrupted.
Solution:
- Delete
node_modules
andpackage-lock.json
:rm -rf node_modules package-lock.json
- Reinstall dependencies:
npm install
Summary of Fixes
Cause | Solution |
---|---|
Dependency missing | npm install <package> |
Wrong module name | Check case sensitivity |
Installed globally instead of locally | npm install <package> |
node_modules missing | npm install |
Wrong file path | Use ./ for local modules |
Incorrect main file in package.json | Update main field |
Circular dependencies | Refactor code |
Installed in wrong directory | Check with npm list <package> |
Global packages not found | Update NODE_PATH |
ES modules issues | Ensure "type": "module" in package.json |
Corrupted node_modules | Delete and reinstall |
By following these steps, you should be able to resolve the MODULE_NOT_FOUND
error in Node.js and ensure that your dependencies load correctly.