我有一个使用Typescript制作的简单Node / Express应用程序。 eslint给我错误
Missing file extension "ts" for "./lib/env" import/extensions
这是我的.eslintrc文件
{
"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
}
}
我已经安装了eslint-plugin-impor和eslint-import-resolver-typescript。 而且我不知道为什么,我得到了那个错误。
答案 0 :(得分:11)
在您的 eslint 配置中将此添加到 rules
:
"rules": {
"import/extensions": "off"
}
这会禁用规则,因为 airbnb
的配置启用了它。
答案 1 :(得分:10)
我知道这已经晚了,但如果您要扩展 Airbnb 规则,您可以使用 eslint-config-airbnb-typescript。
先卸载旧的,添加新的:
# 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
然后更新您的 ESlint 配置,从“扩展”部分删除旧的 Airbnb 并添加新的:
extends: ["airbnb-typescript"]
答案 2 :(得分:9)
将以下代码添加到“规则”:
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
]
'airbnb'伴奏config导致了问题。
答案 3 :(得分:0)
如果您像我一样尝试配置 babel、旧版 Javascript 和新的打字稿文件并尝试在 *.ts
上启用无扩展导入,那么我遇到了 this ESLint issue(我也在下面找到解决方案):
除了 rules
配置:
"rules": {
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
]
}
您还需要在您的 .eslintrc.js
中添加一个额外的设置条目:
"settings": {
"import/extensions": [".js", ".mjs", ".jsx", ".js", ".jsx", ".ts", ".tsx"]
},
祝你好运!
答案 4 :(得分:0)
通过捆绑我在互联网上找到的所有答案来解决这个问题:
这是我的最终结果:
{
"settings": {
"import/extensions": [".js", ".jsx", ".ts", ".tsx"],
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
},
"env": {
"browser": true,
"es2021": true
},
"extends": ["plugin:react/recommended", "airbnb"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["import", "react", "@typescript-eslint"],
"rules": {
"no-console": 1,
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never",
"mjs": "never"
}
]
}
}
我正在使用 react native 顺便说一句。如果您使用不同的东西,只需删除与反应相关的内容就足够了
答案 5 :(得分:0)
重要的是将导入扩展和解析器添加到 .eslintrc
"settings": {
"import/extensions": [".js", ".jsx", ".ts", ".tsx"],
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"]
},
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
}
} 并添加到规则:
"import/extensions": [
"error",
"ignorePackages",
{
"js": "never",
"jsx": "never",
"ts": "never",
"tsx": "never"
}
]
enter code here