Como fazer o eslint resolver caminhos mapeados no jsconfig

9

No meu projeto nextjs, mapeei o caminho jsconfig.jsonpara facilitar as importações absolutas

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

Meus caminhos de importação ficam assim import { VIEW } from '@/src/shared/constants';

Meu eslintrc.jstem configurações especificadas como

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

Ainda estou recebendo o erro dizendo que não consigo resolver "@ / what / ever / my / path / is"

Como faço para o eslint perceber o caminho do jsconfig

mdanishs
fonte

Respostas:

6

Eu estava usando babel-eslint como meu analisador no eslintrc. Durante a pesquisa, percebi que precisava adicionar o babel-plugin-module-resolverbabelrc para resolver os módulos. Neste arquivo, podemos definir nossos caminhos mapeados que estão lá em nosso jsconfig.

Portanto, a adição do seguinte plugin no arquivo babelrc compilou meu código com sucesso.

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

De acordo com os documentos para eslint-import-resolver-alias , a mappropriedade deve ser uma matriz de matrizes, portanto, tente o seguinte:

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

Além disso, verifique se você realmente eslint-import-resolver-aliasinstalou - é fácil esquecer!

Duncan Thacker
fonte
O plugin está instalado, eu tentei fazê-lo com matriz também. Ainda o mesmo problema, ele não pode resolver o caminho.
mdanishs 24/01