параметр пути tsconfig и ESLint - PullRequest
7 голосов
/ 19 июня 2020

Я настроил опцию paths в моем tsconfig.json файле. Пока все работает нормально. Я могу запускать свои тесты, и я могу выполнять программу как обычно. Моя единственная проблема заключается в том, что ESLint не находит модули, к которым осуществляется доступ по одному из путей, определенных в tsconfig.json.

Вот все файлы, связанные с проблемой:

tsconfig. json:

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "allowJs": true,
        "sourceMap": true,
        "outDir": "./dist",
        "rootDir": "./",
        "strict": true,
        "esModuleInterop": true,
        "declaration": true,
        "resolveJsonModule": true,
        "baseUrl": ".",
        "paths": {
            "@/*": ["./src/*"]
        }
    },
    "include": ["src/**/*", "test/**/*", "index.ts"]
}

tsconfig.eslint. json:

{
    "extends": "./tsconfig.json",
    "include": ["src/**/*", "test/**/*", "index.ts", ".eslintrc.js"]
}

.eslintr c. js:

{
    root: true,
    env: {
        browser: true,
        es6: true,
        node: true
    },
    extends: ['plugin:@typescript-eslint/recommended', 'plugin:@typescript-eslint/recommended-requiring-type-checking'],
    parser: '@typescript-eslint/parser',
    parserOptions: {
        project: ['tsconfig.eslint.json'],
        sourceType: 'module'
    },
    settings: {
        'import/resolver': {
            typescript: {}
        }
    },
    plugins: ['@typescript-eslint', 'import', 'prefer-arrow'],
    rules: {...}
}

Я использую пакет eslint-import-resolver-typescript .

Теперь, если я попытаюсь импортировать файл './src/test.ts' в './index .ts 'с путем' @ / test ', тогда ESLint не сможет разрешить этот импорт (хотя TypeScript разрешает его очень хорошо).

Я в основном скопировал свое текущее решение из здесь , потому что я думал, что у человека, задавшего эту проблему, была та же проблема, что и у меня, но моя установка все еще не работает.

Кстати, я нахожусь в среде NodeJS.

РЕДАКТИРОВАТЬ: Я также пробовал использовать пакет eslint-import-resolver-alias . Это помогло лишь частично. Я мог бы избавиться от ошибок «import / no-unresolved», но всякий раз, когда я вызываю импортированную функцию, я получаю «@ typescript-eslint / no-unsafe-call», потому что, по-видимому, ESLint не находит типы для импортированных файлов. и, таким образом, все дает тип any.

Ответы [ 2 ]

1 голос
/ 25 августа 2020

вам нужно добавить плагин eslint https://github.com/benmosher/eslint-plugin-import#typescript

там под extends вы можете указать параметр для машинописного текста

extends:
  - plugin:import/typescript

это должно сработать

1 голос
/ 25 августа 2020

Не могли бы вы попробовать добавить tsconfigRootDir к .eslintrc.js? У меня это сработало.

parserOptions: {
    tsconfigRootDir: __dirname,
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...