如何解决“未找到规则‘@typescript-eslint/rule-name’的定义”

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

我正在尝试将 TypeScript 编译添加到现有的 Javascript 项目中。

据我所知,这应该是可能的(甚至很容易),并且您可以通过代码库逐步传播 TS。不幸的是,这不是我所看到的 - 添加打字稿并尝试启动项目后,我对项目中的每个文件都收到此错误:

Definition for rule '@typescript-eslint/rule-name' was not found

我的源代码中的任何地方都没有字符串

rule-name
的实例。

这是我的

tsconfig.json
:

{
  "compilerOptions": {
    "baseUrl": "src",
    "noImplicitAny": false,
    "sourceMap": true,
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "allowSyntheticDefaultImports": true,
    "strict": false,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "esModuleInterop": true,
    "jsx": "react",
    "skipLibCheck": true
  },
  "include": [
    "src",
    "types"
  ],
  "exclude": [
    "node_modules",
    "build"
  ]
}

我尝试将

"checkJs": false
添加到配置中并重新启动,但这不会改变任何内容。

我无法在网上找到有关此“规则名称”问题的任何信息。它看起来确实像是某种占位符文本,但我找不到来源。

任何人都可以建议任何可以帮助我构建这个项目的建议吗?

javascript typescript build
7个回答
34
投票

您遇到的错误来自 ESLint,意味着您的

.eslintrc
中有一条规则,该规则在您的任何插件中都不存在。如果您遵循
@typescript-eslint/eslint-plugin
的使用指南,但没有将占位符
rule-name
替换为实际规则名称(如下所示),则可能会发生这种情况 https://www.npmjs.com/package/@typescript-eslint/ eslint 插件


7
投票

对于那些不想仅仅禁用 ESLint 而是想让它工作的人,运行

npm update
可以解决问题。就我而言,仅更新
@typescript-eslint/parser
@typescript-eslint/eslint-plugin
是不够的,但在
npm update
警告消失后,ESLint 已启动并运行。

还值得记住包作者的这一要点:

@typescript-eslint/parser 和 @typescript-eslint/eslint-plugin 使用相同的版本号非常重要。

更详细的包设置请参见 npmjs


5
投票

对我来说,添加插件就足够了:@typescript-eslint/recommended 在 .eslintrc 文件中。

"extends": [
  ...<otherExtentions>...
  "plugin:@typescript-eslint/recommended"
]

3
投票

这是因为您的 eslint.json 文件中没有声明该规则 将以下行添加到 esling.json 文件中的规则中

“@typescript-eslint/object-curly-spacing”:“关闭”

请参考下图了解更多

Refer this image to add the rule to eslint.json file


1
投票

截至目前,“@typescript-eslint/eslint-plugin”已在其 v6 版本中删除了此规则。

请参阅此处:https://github.com/typescript-eslint/typescript-eslint/issues/5973

您可以通过将其替换为规则“import/no-duplicates”来解决此问题,该规则是“eslint-plugin-import”包的一部分。

请参阅此处:https://github.com/import-js/eslint-plugin-import/blob/HEAD/docs/rules/no-duplicates.md


0
投票

我的问题是......规则实际上不再有效并已弃用:

ESLint: Definition for rule '@typescript-eslint/no-empty-interface' was not found.(@typescript-eslint/no-empty-interface)
ESLint: Definition for rule '@typescript-eslint/no-use-before-define' was not found.(@typescript-eslint/no-use-before-define)
ESLint: Definition for rule '@typescript-eslint/quotes' was not found.(@typescript-eslint/quotes)
ESLint: Definition for rule '@typescript-eslint/semi' was not found.(@typescript-eslint/semi)

看看您是否可以在此列表中找到您的规则,如果找到,只需将其从您的

.eslintrc.json
文件中删除即可。


-2
投票

如果您使用

react-app-rewired
customize-cra
,您需要确保使用后者中的
disableEsLint
;否则 linting 错误会变成打字稿错误并阻止编译。

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