Skip to content

Parsing Error: Cannot Find Module 'next/babel'

Problem Statement

The "Parsing error: Cannot find module 'next/babel'" is a common ESLint issue in Next.js projects that appears as a false positive error in code editors like VS Code, while the application typically compiles and runs without problems.

This error occurs when ESLint cannot properly locate the Next.js Babel configuration, often due to:

  • Incorrect ESLint configuration
  • Monorepo or workspace setup issues
  • Package manager conflicts
  • VS Code ESLint extension misconfiguration

The error message typically appears in the editor but doesn't affect the build process, indicating it's primarily a development environment configuration issue rather than a code problem.

Solutions

The most reliable solution is to modify your .eslintrc.json file:

json
{
  "extends": ["next/core-web-vitals"]
}
json
{
  "extends": ["next/babel", "next/core-web-vitals"]
}

WARNING

Avoid adding only "next/babel" without "next/core-web-vitals" as this may cause compilation errors.

2. Workspace Configuration for Monorepos

If you're working in a monorepo or multi-folder workspace, create .vscode/settings.json:

json
{
  "eslint.workingDirectories": [
    "./client",
    "./server",
    "./packages/*"
  ]
}

Replace the directory names with your actual project structure.

3. Package Manager Configuration

For projects using pnpm or other non-npm package managers:

json
{
  "eslint.packageManager": "pnpm"
}

4. Restart ESLint Server

After making configuration changes, restart the ESLint server in VS Code:

  1. Press Ctrl+Shift+P (Cmd+Shift+P on Mac)
  2. Search for "ESLint: Restart ESLint Server"
  3. Execute the command

5. File Location Fix

Ensure your .eslintrc.json is at the root of your workspace. If it's in a subdirectory, move it to the root and restart VS Code.

Advanced Scenarios

For Turborepo/Monorepo Setups

Add specific parser options to your ESLint configuration:

json
{
  "extends": ["next/core-web-vitals"],
  "parserOptions": {
    "babelOptions": {
      "presets": [require.resolve('next/babel')]
    }
  }
}

Alternative Parser Configuration

If the above solutions don't work, try explicitly setting the parser:

json
{
  "extends": ["next/core-web-vitals"],
  "overrides": [
    {
      "files": ["*.js", "*.jsx"],
      "parser": "espree",
      "parserOptions": {
        "ecmaVersion": 2020
      }
    }
  ]
}

What Not to Do

DANGER

Avoid creating a .babelrc file with Next.js preset as suggested in some older answers. Next.js includes the necessary Babel configuration by default, and adding this file may interfere with the built-in SWC compiler in newer versions.

Troubleshooting Steps

If the error persists:

  1. Check VS Code ESLint Extension: Ensure it's properly configured or try temporarily disabling it
  2. Verify Package Manager: Confirm your package manager settings match your project
  3. Restart IDE: Sometimes a simple restart resolves the issue
  4. Update Dependencies: Ensure Next.js and ESLint packages are up to date
bash
# Using npm
npm install next@latest eslint@latest

# Using yarn
yarn add next@latest eslint@latest

# Using pnpm
pnpm add next@latest eslint@latest

Conclusion

The "Cannot find module 'next/babel'" error is typically an ESLint configuration issue rather than a problem with your Next.js application. The solutions provided address the most common scenarios across different Next.js versions and project structures.

For most cases, updating your ESLint configuration to use "next/core-web-vitals" (for Next.js 12+) will resolve the issue. For monorepo setups or specific package managers, additional workspace configuration may be necessary.

Remember that this error is usually just a visual annoyance in your editor and doesn't affect your application's functionality or build process.