我正在尝试将 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
添加到配置中并重新启动,但这不会改变任何内容。
我无法在网上找到有关此“规则名称”问题的任何信息。它看起来确实像是某种占位符文本,但我找不到来源。
任何人都可以建议任何可以帮助我构建这个项目的建议吗?
您遇到的错误来自 ESLint,意味着您的
.eslintrc
中有一条规则,该规则在您的任何插件中都不存在。如果您遵循 @typescript-eslint/eslint-plugin
的使用指南,但没有将占位符 rule-name
替换为实际规则名称(如下所示),则可能会发生这种情况 https://www.npmjs.com/package/@typescript-eslint/ eslint 插件
对于那些不想仅仅禁用 ESLint 而是想让它工作的人,运行
npm update
可以解决问题。就我而言,仅更新 @typescript-eslint/parser
和 @typescript-eslint/eslint-plugin
是不够的,但在 npm update
警告消失后,ESLint 已启动并运行。
还值得记住包作者的这一要点:
@typescript-eslint/parser 和 @typescript-eslint/eslint-plugin 使用相同的版本号非常重要。
更详细的包设置请参见 npmjs。
对我来说,添加插件就足够了:@typescript-eslint/recommended 在 .eslintrc 文件中。
"extends": [
...<otherExtentions>...
"plugin:@typescript-eslint/recommended"
]
截至目前,“@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
我的问题是......规则实际上不再有效并已弃用:
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
文件中删除即可。