Comment rendre eslint résoudre les chemins mappés dans jsconfig

9

Dans mon projet nextjs, j'ai tracé un chemin jsconfig.jsonpour faciliter les importations absolues

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

Mes chemins d'importation ressemblent à ceci import { VIEW } from '@/src/shared/constants';

Mes eslintrc.jsparamètres sont spécifiés comme

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

J'obtiens toujours l'erreur disant que je ne peux pas résoudre "@ / what / ever / my / path / is"

Comment puis-je faire eslint réaliser le chemin jsconfig

mdanishs
la source

Réponses:

6

J'utilisais babel-eslint comme analyseur dans eslintrc. Pendant la recherche, j'ai réalisé que je devais ajouter babel-plugin-module-resolverbabelrc pour résoudre les modules. Dans ce fichier, nous pouvons définir nos chemins mappés qui sont là dans notre jsconfig.

Par conséquent, l'ajout du plugin suivant dans le fichier babelrc a compilé mon code avec succès.

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

Selon les documents pour eslint-import-resolver-alias , la mappropriété doit être un tableau de tableaux, alors essayez ceci:

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

Vérifiez également que vous avez réellement eslint-import-resolver-aliasinstallé - c'est facile à oublier!

Duncan Thacker
la source
Le plugin est installé, j'ai également essayé de le faire avec le tableau. Toujours le même problème, il ne peut pas résoudre le chemin.
mdanishs