typescript 未找到规则“import/extensions”的ESLint定义

6mzjoqzu  于 2023-05-08  发布在  TypeScript
关注(0)|答案(5)|浏览(127)

我在VS Code中使用ESLint的所有TypeScript文件上得到以下两个错误:

Definition for rule 'import/extensions' was not found.eslint(import/extensions)
Definition for rule 'import/no-extraneous-dependencies' was not found.eslint(import/no-extraneous-dependencies)

VSC问题窗格中的屏幕截图:

可能重复的注意事项

关于不同的模块,甚至一些关于import/extensions,有许多类似的问题,但建议的解决方案都没有帮助。我都试过了。我还尝试了Stack Overflow在输入这个问题时建议的每个线程中发布的每个解决方案。
下面是我的.eslintrc.json

{
  "env": {
      "es2021": true,
      "node": true
  },
  "extends": [
      "airbnb-typescript/base",
      "plugin:@typescript-eslint/recommended"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
      "ecmaVersion": 12,
      "sourceType": "module",
      "project": "./tsconfig.json"
  },
  "plugins": [
      "@typescript-eslint"
  ],
  "rules": {
      "@typescript-eslint/no-use-before-define": "off"
  }
}

package.json

{
  "name": "graph-userdata-gateway",
  "version": "1.0.0",
  "description": "Gateway for PowerApps Microsoft Graph API custom connector to query user data with application permissions.",
  "main": "src/index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git@gitlab.yobitti.fi:powerapps/graph-userdata-gateway.git"
  },
  "author": "Benjamin Pettinen / YO-bitti Oy",
  "license": "UNLICENSED",
  "dependencies": {
    "@microsoft/microsoft-graph-client": "^3.0.0",
    "dedent": "^0.7.0",
    "express": "^4.17.1",
    "isomorphic-fetch": "^3.0.0",
    "md5": "^2.3.0",
    "node-fetch": "^2.6.1"
  },
  "devDependencies": {
    "@types/dedent": "^0.7.0",
    "@types/express": "^4.17.13",
    "@types/isomorphic-fetch": "0.0.35",
    "@types/md5": "^2.3.1",
    "@types/node-fetch": "^2.5.12",
    "@typescript-eslint/eslint-plugin": "^4.29.2",
    "@typescript-eslint/parser": "^4.29.2",
    "eslint": "^7.32.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-airbnb-typescript": "^13.0.0",
    "eslint-plugin-import": "^2.24.1",
    "typescript": "^4.3.5"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "esModuleInterop": true,
    "noImplicitAny": true,
    "moduleResolution": "Node",
    "outDir": "dist",
    "sourceMap": true
  }
}

我试过删除整个node_mobules并重新运行npm install,以及在.eslintrc.json中使用extends。如果我删除airbnb-typescript/base,错误消失,但我失去了ESLint的Airbnb风格。使用airbnb-base也可以,但是ESLint会抱怨Missing file extension for abc.tsUnable to resolve path to module abc。我还多次重新启动VSC和ESLint服务器。

x7yiwoj4

x7yiwoj41#

您错过了在eslint.json文件中添加此内容。

"plugins": ["import"],

或者

"extends": ["plugin:import/recommended"]

参考:https://github.com/import-js/eslint-plugin-import#resolvers

brvekthn

brvekthn2#

对于那些在Typescript Airbnb配置升级到v13+后来到这里并希望了解变化的人:
仔细阅读eslint-config-airbnb-typescript项目的最新自述。
确保您拥有常规的Airbnb配置设置。请参阅eslint-config-airbnb,如果您没有使用React,请参阅eslint-config-airbnb-base
听起来像是新的东西为您的旧设置,它确实是。那是因为有一个breaking change in v13
让我们按照这个建议去做。
根据eslint-config-airbnb-base说明,您应该将eslint-config-airbnb-base及其对等deps添加到您的package.json中。最简单的方法是:npx install-peerdeps --dev eslint-config-airbnb-base,现在这个命令会将eslint-config-airbnb-baseeslint-plugin-import都添加到您的package.json中:

"eslint": "^8.7.0",
+    "eslint-config-airbnb-base": "^15.0.0",
     "eslint-config-airbnb-typescript": "^16.1.0",
+    "eslint-plugin-import": "^2.25.4",

最后一步是将airbnb-base添加到eslint config的extends数组的airbnb-typescript/base之前:

plugins: ["@typescript-eslint"],
   extends: [
+    "airbnb-base",
     "airbnb-typescript/base",

就是这样!问题现在应该解决了。

qvtsj1bj

qvtsj1bj3#

在我的例子中,我能够通过将“allowSyntheticDefaultImports”设置添加到“tsconfig.json”中的“compilerOptions”来修复它。

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
  }
}
guicsvcw

guicsvcw4#

如果配置没有问题
npm依赖提升导致的问题
项目根目录将依赖于与升级安装不匹配的eslint,因为插件报告错误“未找到规则'xxx'的ESLint定义
详细的问题解决过程在一篇文章中我写:https://www.yuque.com/cloudyan/faq/py7xb5

yvgpqqbh

yvgpqqbh5#

如果您使用.eslintrc.js,则添加以下内容

module.exports = {
  ...otherSetting,
  plugins: ["import"],
}

相关问题