Как заставить eslint разрешать пути, отображенные в jsconfig

9

В моем проекте nextjs я наметил путь, jsconfig.jsonчтобы облегчить абсолютный импорт

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

Мои пути импорта выглядят так import { VIEW } from '@/src/shared/constants';

Мои eslintrc.jsнастройки указаны как

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

Я все еще получаю сообщение об ошибке "Не могу решить" @ / what / ever / my / path / is "

Как заставить eslint реализовать путь jsconfig

mdanishs
источник

Ответы:

6

Я использовал babel-eslint в качестве парсера в eslintrc. При поиске я понял, что мне нужно добавить babel-plugin-module-resolverв babelrc для разрешения модулей. В этом файле мы можем определить наши отображенные пути, которые есть в нашем jsconfig.

Следовательно, добавление следующего плагина в файл babelrc успешно скомпилировало мой код.

[
    "module-resolver",
    {
        "alias": {
          "@": "./"
        }
    }
]
mdanishs
источник
0

В соответствии с документами для eslint-import-resolver-alias , mapсвойство должно быть массивом массивов, поэтому попробуйте это:

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

Кроме того, дважды проверьте, что вы действительно eslint-import-resolver-aliasустановили - это легко забыть!

Дункан Такер
источник
Плагин установлен, я попробовал сделать это и с массивом. Все та же проблема, она не может решить путь.
Мданиш