node.js - Typescript eslint - Saknad filändelse "ts" import/extensions
Jag har en enkel Node/Express-app gjord med Typescript. Och eslint ger mig felet
Missing file extension "ts" for "./lib/env" import/extensions
Här är 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
}
}
Jag har installerat eslint-plugin-import och eslint-import-resolver-typescript. Och jag kan inte lista ut varför jag fick det felet.
Svar #1
Lägg till följande kod i rules:
"rules": {
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
]
}
airbnb ESLint-konfiguration leder problemet.
Svar #2
Jag vet att detta är sent, men om du förlänger Airbnb-reglerna kan du använda eslint-config-airbnb-typescript. Vänligen se projektets sida för de senaste instruktionerna. Här är huvudinnehållet från mars 2022:
Installera
npm install -D eslint-config-airbnb-typescript
ESLint-konfigurationsfil
använder React - lägg till 'airbnb-typescript' efter 'airbnb'
extends: [
'airbnb',
+ 'airbnb-typescript'
]
utan React - lägg till 'airbnb-typescript/base' efter 'airbnb-base'
extends: [
'airbnb-base',
+ 'airbnb-typescript/base'
]
sätt parserOptions.project till sökvägen till din tsconfig.json
{
extends: ['airbnb', 'airbnb-typescript'],
+ parserOptions: {
+ project: './tsconfig.json'
+ }
}
OBS: Före augusti 2021 skulle du även behöva utföra följande uppgifter. Dessa instruktioner finns kvar här endast som historisk referens. Du bör inte behöva göra detta längre.
Avinstallera först den gamla och lägg till den nya:
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
Uppdatera sedan din ESlint-konfiguration, ta bort den gamla Airbnb från avsnittet "extends" och lägg till den nya:
extends: ["airbnb-typescript"]
Svar #3
Detta är en märklig lösning, men jag har lagt till "": "never" och det fungerade för mig (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
Viktigt att lägga till importtillägg och parser till .eslintrc
"settings": {
"import/extensions": [".js", ".jsx", ".ts", ".tsx"],
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
}
},
Lägg till ytterligare i reglerna:
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
]
enter code here
