Cómo hacer que Eslint resuelva rutas asignadas en jsconfig

9

En mi proyecto nextjs he mapeado la ruta jsconfig.jsonpara facilitar las importaciones absolutas

{
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
      "@/*": ["./*"]
    },
    "target": "es6",
    "module": "commonjs",
    "experimentalDecorators": true
  }
}

Mis rutas de importación se ven así import { VIEW } from '@/src/shared/constants';

Mi eslintrc.jstiene configuraciones especificadas como

module.exports = {
    ... ,
    settings: {
        "import/resolver": {
          alias: {
            extensions: [".js"],
            map: ["@", "."]
          }
        }
      }
}

Todavía recibo el error que dice que no se puede resolver "@ / what / ever / my / path / is"

¿Cómo hago que Eslint se dé cuenta de la ruta jsconfig?

mdanishs
fuente

Respuestas:

6

Estaba usando babel-eslint como mi analizador en eslintrc. Mientras buscaba, me di cuenta de que necesitaba agregar babel-plugin-module-resolverbabelrc para resolver los módulos. En este archivo podemos definir nuestras rutas asignadas que están allí en nuestro jsconfig.

Por lo tanto, agregar el siguiente complemento en el archivo babelrc compiló mi código con éxito.

[
    "module-resolver",
    {
        "alias": {
          "@": "./"
        }
    }
]
mdanishs
fuente
0

De acuerdo con los documentos de eslint-import-resolver-alias , la mappropiedad debe ser una matriz de matrices, así que intente esto:

module.exports = {
    ... ,
    settings: {
        "import/resolver": {
          alias: {
            extensions: [".js"],
            map: [ ["@", "."] ]
          }
        }
      }
}

Además, verifique que realmente haya eslint-import-resolver-aliasinstalado: ¡es fácil de olvidar!

Duncan Thacker
fuente
El complemento está instalado, intenté hacerlo también con array. Sigue siendo el mismo problema, no puede resolver el camino.
mdanishs