Saltar al contenido principal
ESLint

ESLint: Parsing error: Cannot find module '@typescript-eslint/parser'

Cómo resolver los errores más comunes de ESLint: parsing errors, reglas desconocidas, conflictos con Prettier y la nueva configuración flat config.

Error: ESLint: Parsing error: Cannot find module

¿Por qué ocurre?

Los errores de ESLint suelen ocurrir por: - Dependencias del parser no instaladas (`@typescript-eslint/parser`, `@babel/eslint-parser`) - Conflicto de versiones entre ESLint 8 y ESLint 9 (flat config vs legacy) - Reglas de ESLint y Prettier que se contradicen - La propiedad `extends` ya no existe en eslint.config.js (ESLint 9) - Plugin instalado pero no declarado en la configuración

Solución paso a paso

1. Instalar dependencias faltantes del parser

# Para proyectos TypeScript
npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin

# Para proyectos React npm install --save-dev eslint-plugin-react eslint-plugin-react-hooks

# Para proyectos con Prettier npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier

2. Configuración moderna ESLint 9 (flat config)

// eslint.config.js
import js from '@eslint/js'
import tsPlugin from '@typescript-eslint/eslint-plugin'
import tsParser from '@typescript-eslint/parser'

export default [ js.configs.recommended, { files: ['**/*.{ts,tsx}'], languageOptions: { parser: tsParser, parserOptions: { project: './tsconfig.json', }, }, plugins: { '@typescript-eslint': tsPlugin, }, rules: { '@typescript-eslint/no-unused-vars': 'error', '@typescript-eslint/no-explicit-any': 'warn', }, }, ]

3. Configuración ESLint 8 (legacy .eslintrc)

{
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"],
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "prettier"
  ],
  "rules": {
    "no-unused-vars": "off",
    "@typescript-eslint/no-unused-vars": "error"
  }
}

4. Resolver conflicto ESLint + Prettier

npm install --save-dev eslint-config-prettier
// eslint.config.js (ESLint 9)
import prettierConfig from 'eslint-config-prettier'

export default [ // ... otras configs prettierConfig, // ← Siempre el ÚLTIMO para sobrescribir reglas de formato ]

5. Ignorar archivos (ESLint 9)

// eslint.config.js
export default [
  {
    ignores: ['dist/', 'node_modules/', '*.min.js']
  },
  // ... resto de la config
]

6. Verificar la instalación

# Ver versión de ESLint
npx eslint --version

# Lint de un archivo específico con output detallado npx eslint src/index.ts --debug

# Ver la configuración que aplica a un archivo npx eslint --print-config src/index.ts

Cómo evitarlo en el futuro

- Usa `npm init @eslint/config` para generar una configuración válida automáticamente - Mantén ESLint y todos sus plugins en versiones compatibles (revisa peer dependencies) - Usa `eslint-config-prettier` para evitar conflictos con Prettier - Añade `eslint` al pre-commit hook con `lint-staged` para detectar errores antes del commit

ESLintlintingTypeScriptPrettierflat config

¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:

Generador de Prompts

¿Necesitas desarrollo a medida?

Apps web, IA, módulos ERP — cuéntame tu proyecto.