Jak sprawić, by eslint rozwiązał ścieżki odwzorowane w jsconfig

9

W moim projekcie nextjs zmapowałem ścieżkę, jsconfig.jsonaby ułatwić import bezwzględny

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

Moje ścieżki importu wyglądają tak import { VIEW } from '@/src/shared/constants';

Moje eslintrc.jsma ustawienia określone jako

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

Nadal pojawia się błąd informujący, że nie można rozwiązać „@ / what / ever / my / path / is”

Jak sprawić, aby eslint zrealizował ścieżkę jsconfig

mdanishs
źródło

Odpowiedzi:

6

Użyłem babel-eslint jako mojego parsera w eslintrc. Podczas wyszukiwania zdałem sobie sprawę, że muszę dodać babel-plugin-module-resolverbabelrc, aby rozwiązać moduły. W tym pliku możemy zdefiniować nasze zmapowane ścieżki, które znajdują się w naszym jsconfig.

Stąd dodanie następującej wtyczki do pliku babelrc skompilowało mój kod.

[
    "module-resolver",
    {
        "alias": {
          "@": "./"
        }
    }
]
mdanishs
źródło
0

Zgodnie z docs dla eslint-import-rozpoznawania-alias The mapnieruchomość powinna być tablicą tablic, więc spróbuj tego:

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

Sprawdź także, czy rzeczywiście masz eslint-import-resolver-aliaszainstalowany - łatwo zapomnieć!

Duncan Thacker
źródło
Wtyczka jest zainstalowana, próbowałem zrobić to również z tablicą. Nadal ten sam problem, nie można rozwiązać ścieżki.
mdanishs