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.
¿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
¿Quieres que una IA te ayude? Genera el prompt perfecto para tu error:
Generador de Prompts