node.js - Typescript eslint - Manglende filendelse "ts" import/extensions


Jeg har en enkel Node/Express-app laget med Typescript. Og eslint gir meg feilen

Missing file extension "ts" for "./lib/env" import/extensions

Her er min .eslintrc-fil

    {
  "extends": [
    "airbnb",
    "plugin:@typescript-eslint/recommended",
    "prettier",
    "prettier/react",
    "plugin:import/errors",
    "plugin:import/warnings",
    "plugin:import/typescript"
  ],
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint", "prettier", "import"],
  "settings": {
    "import/extensions": [".js", ".jsx", ".ts", ".tsx"],
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    },
    "import/resolver": {
      "typescript": {
        "directory": "./tsconfig.json"
      },
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  },
  "rules": {
    "@typescript-eslint/indent": [2, 2],
    "no-console": "off",
    "import/no-unresolved": [2, { "commonjs": true, "amd": true }],
    "import/named": 2,
    "import/namespace": 2,
    "import/default": 2,
    "import/export": 2
  }
}

Jeg har installert eslint-plugin-import og eslint-import-resolver-typescript. Og jeg kan ikke finne ut hvorfor jeg får den feilen.

Svar #1

Legg til følgende kode i rules:

"rules": {
   "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
   ]
}

airbnb ESLint-konfigurasjon fører til problemet.

Svar #2

Jeg vet at dette er sent, men hvis du utvider Airbnb-reglene, kan du bruke eslint-config-airbnb-typescript. Vennligst se prosjektets side for de nyeste instruksjonene. Her er essensen av det per mars 2022:

Installer

npm install -D eslint-config-airbnb-typescript

ESLint-konfigurasjonsfil

bruker React - legg til 'airbnb-typescript' etter 'airbnb'

extends: [
  'airbnb',
+ 'airbnb-typescript'
]

uten React - legg til 'airbnb-typescript/base' etter 'airbnb-base'

extends: [
  'airbnb-base',
+ 'airbnb-typescript/base'
]

sett parserOptions.project til banen til din tsconfig.json

{
  extends: ['airbnb', 'airbnb-typescript'],
+ parserOptions: {
+   project: './tsconfig.json'
+ }
}

MERK: Før august 2021 måtte du også utføre følgende oppgaver. Disse instruksjonene finnes her kun som historisk referanse. Du bør ikke trenge å gjøre dette lenger.

Fjern først den gamle og legg til den nye:

uninstall whichever one you're using
npm uninstall eslint-config-airbnb
npm uninstall eslint-config-airbnb-base

install the typescript one
npm install -D eslint-config-airbnb-typescript

Oppdater deretter ESlint-konfigurasjonen din, fjern den gamle Airbnb fra «extends»-seksjonen og legg til den nye:

extends: ["airbnb-typescript"]

Svar #3

Dette er en merkelig løsning, men jeg har lagt til "": "never" og det fungerte for meg (https://github.com/import-js/eslint-plugin-import/issues/1573).

"rules": {
   "import/extensions": [
      "error",
      "ignorePackages",
      {
        "": "never",
        "js": "never",
        "jsx": "never",
        "ts": "never",
        "tsx": "never"
      }
   ]
}

Svar #4

Viktig å legge til importutvidelse og parser i .eslintrc

    "settings": {
    "import/extensions": [".js", ".jsx", ".ts", ".tsx"],
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    },
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx", ".ts", ".tsx"]
      }
    }
  }
},

Legg til ytterligere i reglene:

 "import/extensions": [
  "error",
  "ignorePackages",
  {
    "js": "never",
    "jsx": "never",
    "ts": "never",
    "tsx": "never"
  }
]



enter code here

Relaterte artikler