Skip to content

npm/Node.js Error Fixes -- How to Fix Common npm Errors

DodaTech Updated 2026-06-22 6 min read

npm errors like EACCES permissions and module not found break your Node.js project builds instantly -- this guide shows you how to diagnose and fix the most common npm package errors with exact commands and recovery strategies.

What You'll Learn

Why It Matters

Node.js package management is essential for modern JavaScript development. An npm error can block your entire team from building, testing, or deploying code.

Real-World Use

When your CI/CD pipeline fails with a peer dependency conflict or a new developer hits EACCES on their first npm install, knowing the correct fix saves hours of debugging and keeps projects moving.

Common npm Errors Table

Error Message Cause Fix
EACCES: permission denied npm tries to write to global directory without sudo Use nvm or configure npm prefix to user directory
MODULE_NOT_FOUND Package not installed or missing from node_modules Run npm install or add to package.json
ERESOLVE: unable to resolve dependency tree Peer dependency version conflicts Use --legacy-peer-deps or update conflicting packages
npm ERR! code ENOENT package.json is missing or corrupted Create or regenerate package.json with npm init
FATAL ERROR: Ineffective mark-compacts near heap limit Node.js process ran out of memory Increase memory with --max-old-space-size flag
npm ERR! code ELIFECYCLE Script in package.json exited with non-zero code Check the script output, fix the underlying error
npm WARN deprecated package@version Package is no longer maintained Update to the replacement package or find an alternative

Step-by-Step Fixes

Fix 1: EACCES Permission Denied

# bad
npm install -g typescript
# npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript'
# fixed -- configure npm to use user directory
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
npm install -g typescript

Expected output:

+ typescript@5.4.0
added 1 package from 1 contributor in 2.345s

Fix 2: MODULE_NOT_FOUND

# bad
node app.js
# Error: Cannot find module 'express'
# Require stack:
# - /home/user/app/app.js
# fixed
npm install express
# or if package.json exists but node_modules is missing
npm install

Expected output:

+ express@4.18.2
added 57 packages from 42 contributors in 3.124s

Fix 3: Peer Dependency Conflict (ERESOLVE)

# bad
npm install react@18
# npm ERR! ERESOLVE unable to resolve dependency tree
# fixed -- skip strict peer dependency resolution
npm install --legacy-peer-deps react@18

# or update the conflicting peer dependency
npm install react@18 react-dom@18

Expected output:

+ react@18.2.0
+ react-dom@18.2.0
added 2 packages in 5.678s

Fix 4: Out of Memory (Heap Limit)

# bad
npm run build
# FATAL ERROR: Ineffective mark-compacts near heap limit
# Allocation failed - JavaScript heap out of memory
# fixed -- increase Node.js memory limit
NODE_OPTIONS="--max-old-space-size=4096" npm run build

# or set it permanently in package.json
# "scripts": { "build": "NODE_OPTIONS=--max-old-space-size=4096 webpack" }

Expected output:

> project@1.0.0 build
> webpack --mode production

webpack compiled successfully in 12.345s

Fix 5: ELIFECYCIC Script Error

# bad
npm test
# npm ERR! code ELIFECYCLE
# npm ERR! syscall spawn
# npm ERR! test: `mocha test/`
# npm ERR! Exit status 1
# fixed -- run the script directly to see the full error
npx mocha test/

# fix the test file issue, then re-run
npm test

Expected output:

  ✓ test case passes
  ✓ test case passes

  2 passing (10ms)

Fix 6: Deprecated Package Warning

# bad
npm install
# npm WARN deprecated request@2.88.2: request has been deprecated
# fixed -- find what depends on the deprecated package
npm ls request

# Replace with the recommended alternative (node-fetch, axios, got)
npm uninstall request
npm install axios

# Update the code to use the new package

Expected output:

app@1.0.0 /home/user/app
└── (empty -- request removed)
+ axios@1.6.0

npm Error Diagnosis Flowchart

flowchart TD
    A[npm Error Occurs] --> B{Error Type?}
    B -->|EACCES| C[Check global permissions]
    C --> D[Use nvm or set prefix to user dir]
    B -->|MODULE_NOT_FOUND| E[Check if package is installed]
    E --> F[Run npm install in project root]
    B -->|ERESOLVE| G[Check peer dependency tree]
    G --> H[Use --legacy-peer-deps or update deps]
    B -->|Heap OOM| I[Increase memory limit]
    I --> J[Set --max-old-space-size]
    B -->|ELIFECYCLE| K[Run script directly]
    K --> L[Fix underlying script error]
    B -->|Deprecated| M[Find dependent package]
    M --> N[Replace with maintained alternative]
    D --> O[Error Resolved]
    F --> O
    H --> O
    J --> O
    L --> O
    N --> O

Prevention Tips

  • Use nvm (Node Version Manager) to avoid global permission issues entirely
  • Commit package-lock.json to version control for reproducible builds
  • Pin dependency versions in package.json to avoid unexpected breaking changes
  • Run npm outdated regularly to know which packages need updates
  • Set NODE_OPTIONS="--max-old-space-size=4096" in CI/CD configuration files
  • Use npm ci instead of npm install in CI pipelines for faster, deterministic installs
  • Check deprecation notices before adding new dependencies

Practice Questions

  1. What causes the EACCES error when installing npm packages globally? Answer: npm tries to write to /usr/local/lib/node_modules which requires root permissions. Use nvm or set npm prefix to a user-writable directory.

  2. How do you resolve peer dependency conflicts in npm v7+? Answer: Use --legacy-peer-deps flag or update the conflicting dependencies to compatible versions.

  3. What is the difference between npm install and npm ci? Answer: npm ci installs from package-lock.json only, fails if the lock file is out of sync, and is faster -- ideal for CI/CD pipelines.

  4. How do you fix a Node.js out-of-memory error during a build? Answer: Set the NODE_OPTIONS environment variable to --max-old-space-size=4096 to increase the heap memory limit.

  5. Challenge: Write a shell script that checks for deprecated packages in a project, lists their dependents, prompts the user to replace each one, and installs the recommended alternative automatically. Answer:

    #!/bin/bash
    echo "Checking for deprecated packages..."
    npm audit --json | jq -r '.vulnerabilities | to_entries[] | select(.value.severity == "high") | .key' | while read pkg; do
        echo "DEPRECATED: $pkg"
        echo "Find dependents with: npm ls $pkg"
        read -p "Replace with alternative? (y/n) " -n 1 -r
        echo
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            npm uninstall "$pkg"
            echo "Please install the recommended replacement manually."
        fi
    done
    

Quick Reference

Error Cause Quick Fix
EACCES Global permission issue Use nvm or npm config set prefix
MODULE_NOT_FOUND Missing package npm install in project root
ERESOLVE Peer dependency conflict npm install --legacy-peer-deps
OOM / heap limit Memory exhausted NODE_OPTIONS="--max-old-space-size=4096"
ELIFECYCLE Script exited with error Run script directly to see full error
ENOENT Missing package.json npm init -y to create one

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro