当我尝试添加时eslint-config-airbnb
出现此错误
$ npm install --save-dev eslint-config-airbnb
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/eslint-plugin-react-hooks
npm ERR! eslint-plugin-react-hooks@"^5.0.0" from [email protected]
npm ERR! node_modules/eslint-config-next
npm ERR! dev eslint-config-next@"15.0.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! dev eslint-config-airbnb@"*" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/eslint-plugin-react-hooks
npm ERR! peer eslint-plugin-react-hooks@"^4.3.0" from [email protected]
npm ERR! node_modules/eslint-config-airbnb
npm ERR! dev eslint-config-airbnb@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
正如他们的文档中提到的,我检查了所需的正确版本
npm info "eslint-config-airbnb@latest" peerDependencies
{
eslint: '^7.32.0 || ^8.2.0',
'eslint-plugin-react': '^7.28.0',
'eslint-plugin-import': '^2.25.3',
'eslint-plugin-jsx-a11y': '^6.5.1',
'eslint-plugin-react-hooks': '^4.3.0'
}
根据我安装的输出[email protected]
,上述错误没有返回。
现在,问题是我无法安装,eslint-config-airbnb-typescript
因为它给出了不同的依赖问题。
我尝试通过安装所需版本@typescript-eslint/parser
和来修复此问题@typescript-eslint/eslint-plugin
,但它似乎给出了一个循环错误。
这里的问题是:
eslint-config-next
您的项目依赖于名为版本的包15.0.1
,并且需要eslint-plugin-react-hooks@"^5.0.0
。eslint-config-airbnb
版本19.0.4
要求eslint-plugin-react-hooks@"^4.3.0
无法解决这个问题,因为
eslint-plugin-react-hooks
所需的版本eslint-config-airbnb
(版本 4.xx,没有更高/更低版本)低于所需的版本eslint-config-next
(版本 5.xx,没有更高/更低版本)。在撰写本文时,
eslint-config-airbnb
已有 3 年没有更新了,但是有一个线程打开了,涉及到升级到 v5eslint-plugin-react-hooks
。此外,
eslint-config-airbnb-typescript
在撰写本文时,似乎没有得到维护。关于此问题还有一个讨论主题。ESLint 正处于过渡期,因为规则/插件包作者现在需要使用不同的 API 来兼容最新版本的 ESLint。因此,就会出现冲突。
您的选择是:
eslint-config-next
,以便与旧 ESLint 兼容,因此,与旧包的兼容性仍然以此为目标。eslint-config-next
解释了在此放弃对旧依赖项的支持的理由。由于旧版 ESLint 已过期,如果优先考虑项目健康,(2) 将是一个可能的选择。(1) 会“拖延问题”,并可能将自己与未来可能成为死胡同的事情联系起来。
您可能会发现,typescript-eslint 的内置预设在 很大程度上满足了您在语义方面的需求,并且可能与 Prettier 和相关的 prettier eslint 规则一起满足了格式方面的需求。