未找到规则“@typescript-eslint/no-redeclare”的定义

问题描述 投票:0回答:7

在我的所有

.ts
.tsx
文件中,文件中的第一个字符上都有此警告,如下面的屏幕截图所示:

enter image description here

我正在使用标准 CRA 设置。这是我的

package.json

{
  "name": "my-project",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "firebase": "^8.0.1",
    "formik": "^2.2.3",
    "i18next": "^19.8.3",
    "i18next-browser-languagedetector": "^6.0.1",
    "i18next-xhr-backend": "^3.2.2",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-firebaseui": "^4.1.0",
    "react-i18next": "^11.7.3",
    "react-router-dom": "^5.2.0",
    "react-scripts": "^4.0.0",
    "react-select": "^3.1.0",
    "react-spinners": "^0.9.0",
    "react-syntax-highlighter": "^15.3.0",
    "react-transition-group": "^4.4.1",
    "styled-components": "^5.2.1",
    "yup": "^0.29.3"
  },
  "devDependencies": {
    "@cypress/webpack-preprocessor": "^5.4.10",
    "@types/firebase": "^3.2.1",
    "@types/jest": "^26.0.15",
    "@types/react": "^16.9.56",
    "@types/react-dom": "^16.9.9",
    "@types/react-router-dom": "^5.1.6",
    "@types/react-select": "^3.0.23",
    "@types/react-syntax-highlighter": "^13.5.0",
    "@types/styled-components": "^5.1.4",
    "@types/yup": "^0.29.9",
    "cypress": "^5.5.0",
    "eslint-plugin-cypress": "^2.11.2",
    "i18next-parser": "^3.3.0",
    "typescript": "^4.0.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "eject": "react-scripts eject",
    "cypress:open": "cypress open",
    "test": "react-scripts test --runInBand",
    "extract": "i18next --config i18next-parser.config.js"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

还有我的

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react",
    "types": ["cypress"],
    "noFallthroughCasesInSwitch": true
  },
  "include": [
    "src"
  ]
}

知道我错过了什么吗?

typescript create-react-app
7个回答
55
投票

当我看到同样的错误时,我最近更新了我对项目的依赖项。简单地重新启动 Visual Code 似乎就消除了该错误。


5
投票

我也有同样的问题。我修复它的方法是 (a) 更新

package.json

中的解析器
"@typescript-eslint/eslint-plugin": "^4.7.0",
"@typescript-eslint/parser": "^4.7.0",
"eslint-config-airbnb-typescript": "^12.0.0",
"eslint-config-prettier": "^6.15.0",

并 (b) 创建文件

eslintrc.cjs
:

module.exports = {
  "env": {
      "es2020": true,
      "node": true
  },
  "extends": [
    "react-app",
    "airbnb",
    "eslint:recommended",
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
      "ecmaVersion": 11,
      "sourceType": "module"
  },
  "plugins": [
    "prettier",
    "@typescript-eslint"
  ],
  "rules": {
    "prettier/prettier": ["error"],
    "no-console": ["error"]
  }
};

3
投票

更新依赖项时,也请检查您的

resolutions
。我在将
react-scripts
更新到 v4 的同时修复了 ts eslint 版本时遇到了这个问题,原因是 这个问题:

"resolutions": {
  "@typescript-eslint/eslint-plugin": "2.23.0",
  "@typescript-eslint/parser": "2.23.0",
  "@typescript-eslint/typescript-estree": "2.23.0"
},

2
投票

当我看到同样的错误时,我最近更新了我对项目的依赖项。简单地重新启动 Visual Code 似乎就消除了该错误。

我尝试了这里提供的其他各种解决方案,但没有任何效果。由于我一直在更新软件包(

yarn upgrade-interactive --latest
),我想我的
node_modules
可能不是理想。在我清除缓存并重新安装后
node_modules
,错误消失了。

npx lerna clean -y && yarn cache clean && yarn install

或者,如果您不在 lerna(mono)存储库中,只需执行以下操作:

rm -rf node_modules && yarn cache clean && yarn install

由于错误仅出现在 vscode 中(而不是在运行 lint 时出现),因此我重新启动了 vscode,错误就消失了。


1
投票

我正在使用一个具有 Yarn 工作区的项目。事实证明,有两个项目正在使用

eslint-config-react-app
,而一个项目正在使用没有此规则的旧版本。不幸的是,这是正在运行的版本。

要对 Yarn 进行故障排除,请使用

yarn why eslint-config-react-app
。这将告诉您安装该软件包的原因以及安装的版本。

我通过在顶级 package.json 文件中添加 Yarn resolution 解决了我的问题:

  "resolutions": {
    "eslint-config-react-app": "6.0.0"
  },

(您应该将版本固定到 CRA 使用的任何版本)。


1
投票

如果没有什么对你有用,那么对我来说,这也可能对你有帮助。

如果您使用create-react-app,请在package.json中添加此“rules”

 "eslintConfig": {
    "extends": "react-app",
    "rules": {
      "@typescript-eslint/no-redeclare": "off",
      "no-redeclare": "off"
    }
  }

0
投票

我遇到了同样的问题,我通过将以下规则添加到我在 typescript-eslint 存储库中找到的 Eslint 配置来修复它。

{
  // note you must disable the base rule as it can report incorrect errors
  "no-redeclare": "off",
  "@typescript-eslint/no-redeclare": ["error"]
}

确保重新启动打字稿服务器!

© www.soinside.com 2019 - 2024. All rights reserved.