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
