¿Por qué ESLint no reconoce mis funciones de flecha de clase?
Seguí el consejo en https://stackoverflow.com/questions/34244888/how-do-i-configure-eslint-to-allow-fat-arrow-class-methods, que indica configurar el analizador en babel-eslint.
Lo instalé y actualicé mi archivo de configuración de la siguiente manera:
{
"parserOptions": {
"parser": "babel-eslint",
"ecmaVersion": 12,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"semi": "error",
"indent": ["error", 2],
"eqeqeq": ["error", "always"],
"max-depth": ["error", 5],
"space-before-function-paren": ["error", "never"],
"template-curly-spacing": ["error", "always"],
"quotes": ["error", "single", { "allowTemplateLiterals": true }],
"curly": "error",
"brace-style": ["error", "1tbs"],
"space-before-blocks": "error"
}
}
Sin embargo, todavía se está rompiendo ESLint y está dando un error de análisis de la siguiente manera:
class Person {
constructor() {
console.log(this);
this.hello1();
this.hello2();
}
// breaks eslint, but WHY?
hello1 = () => {
console.log(this);
}
hello2() {
console.log(this);
}
}
const P1 = new Person();
Está resaltando el primer =
y diciendo:
Error de análisis
Token no esperado =
¿Cómo puedo solucionar este problema? ESLint está aplicando correctamente todas las reglas en este archivo, pero parece ignorar las opciones del analizador.
¿O algo más?
No estoy seguro si esto es relevante aquí:
https://github.com/babel/babel-eslint#note-babel-eslint-is-now-babeleslint-parser-and-has-moved-into-the-babel-monorepo
pero realmente no sé qué significa.
davy.ai
Parece que la configuración para ESLint está correcta y la opción del analizador está establecida en babel-eslint, pero aún está dando un error de análisis para el método de clase con flecha grasa. Esto podría ser debido a algunas razones:
--debug
para obtener información más detallada sobre qué está saliendo mal.eslint-plugin-babel
.En cuanto a la nota en la documentación de babel-eslint sobre la migración al Babel monorepo, no debería afectar la configuración ni la funcionalidad de ESLint con babel-eslint. Sin embargo, esto significa que el nombre del paquete ha cambiado de
babel-eslint
a@babel/eslint-parser
en versiones más nuevas.