He visto algunas preguntas similares a esta, pero creo que este problema es un poco diferente.
He compartido la configuración de ESLint proveniente de una dependencia, llamémosla my-shared-config . La dependencia contiene algunos complementos, incluido @babel , así:
{ env: { ... }, plugins: [ '@babel', 'import', 'inclusive-language', 'react', 'react-hooks', ], rules: { ... }, } El package.json contiene estas dependencias, entre otras:
"dependencies": { "@babel/core": "7.17.0", "@babel/eslint-parser": "7.17.0", "@babel/eslint-plugin": "7.16.5", "@babel/preset-react": "7.16.7", "eslint": "8.8.0", "eslint-plugin-import": "2.25.4", "eslint-plugin-inclusive-language": "2.2.0", "eslint-plugin-react": "7.28.0", "eslint-plugin-react-hooks": "4.3.0" },Para la mayoría de los proyectos, la configuración compartida funciona. Sin embargo, en un proyecto cuando ejecuto el linter, aparece el siguiente error:
Error: Failed to load plugin '@babel' declared in '--config » my-shared-config': Cannot find module '@babel/eslint-plugin' La única diferencia de este proyecto con los demás, que se me ocurra, es que también instala otras dependencias de @babel/ . Mi estructura node_modules se ve así:
node_modules @babel # <-- BABEL code-frame compat-data core ...more, but nothing for ESLint @my-domain my-shared-config node_modules @babel # <-- BABEL compat-data core eslint-parser # <-- BABEL ESLINT eslint-plugin # <-- BABEL ESLINT ...more Cuando instalo @babel/eslint-parser y @babel/eslint-plugin en mi proyecto, el linter funciona bien. Si bien está bien, obviamente no es la solución que quiero y no quiero que otros equipos que usan my-shared-config tengan que hacer lo mismo. ¿Alguien sabe de alguna otra solución para este problema? Intenté eliminar y reinstalar mis node_modules .
Creo que es probable que esto sea un problema con Yarn en lugar de las dependencias de Babel.
ACTUALIZAR
Este problema solo ocurre cuando las versiones @babel/core no son exactamente iguales. Después de actualizar la versión de @babel/core en my-shared-config , el linter arroja el mismo error en otros proyectos hasta que su propia versión de @babel/core sea la misma.