预提交 eslint --fix 由于不存在的错误而导致的错误
Pre-commit eslint --fix error due to nonexistent errors
由于预提交 eslint --fix 任务失败,我无法提交对文件的更改,returns 出现以下错误:
× eslint --fix:
C:\Users\user\source\repos\project\project-frontend\src\components\Header.tsx
654:61 error Visible, non-interactive elements with click handlers must have at least one keyboard listener jsx-a11y/click-events-have-key-events
654:61 error Static HTML elements with event handlers require a role jsx-a11y/no-static-element-interactions
✖ 2 problems (2 errors, 0 warnings)
我尝试通过在所述文件的第 654 行向组件及其子按钮组件添加键盘侦听器和角色来修复这些错误,但没有成功。
<Snackbar
role="alert"
tabIndex={0}
style={{ right: '24px', textAlign: 'center' }}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left'
}}
open={openLgpd}
onClose={handleCloseLgpd}
onKeyDown={handleCloseLgpd}
message="This is a message!"
action={
<Button role="button" color="secondary" size="small" onKeyDown={handleCloseLgpd} onClick {handleCloseLgpd}>
OK
</Button>
}
/>
我还尝试通过将 aria-hidden 属性 添加到该组件及其子组件来忽略这些错误,但它也没有用:
<Snackbar
aria-hidden
tabIndex={0}
style={{ right: '24px', textAlign: 'center' }}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left'
}}
open={openLgpd}
onClose={handleCloseLgpd}
message="This is a message!"
action={
<Button role="button" color="secondary" size="small" aria-hidden onClick={handleCloseLgpd}>
OK
</Button>
}
/>
渲染后的组件如下所示:
snackbar component
当我尝试完全删除该组件时,eslint 在该文件 中根本不存在的一行上返回了完全相同的错误。
我不知道是什么原因造成的。如果有帮助,我会使用 Webpack 模块捆绑器。
在谷歌搜索一两个小时并了解 ESLint 的工作原理后,我能够解决这个问题,但我现在只能 post 在这里找到答案。对于那个很抱歉。
这是我学到的东西:
由于我的代码大部分是用 TypeScript 编写的,ESLint 可能会对 JavaScript 编译代码进行 linting(因为 ESLint 是专门为 JavaScript 而不是 TypeScript 构建的),因此抛出JS 文件行中的错误与我的 TS 文件行不匹配。如果我错了,请随时纠正我,因为我没有深入到足以完全理解这个问题的根本原因,解决它,然后...
为了在 VS Code 中更好地显示 ESLint 错误信息,我安装了它的官方扩展,它会在文本编辑器上高亮显示正确行中的错误(无论您使用的是 JS 还是 TS)并提出快速解决方案。
就是这样,感谢所有发表评论的人。希望这可能有用。
由于预提交 eslint --fix 任务失败,我无法提交对文件的更改,returns 出现以下错误:
× eslint --fix:
C:\Users\user\source\repos\project\project-frontend\src\components\Header.tsx
654:61 error Visible, non-interactive elements with click handlers must have at least one keyboard listener jsx-a11y/click-events-have-key-events
654:61 error Static HTML elements with event handlers require a role jsx-a11y/no-static-element-interactions
✖ 2 problems (2 errors, 0 warnings)
我尝试通过在所述文件的第 654 行向组件及其子按钮组件添加键盘侦听器和角色来修复这些错误,但没有成功。
<Snackbar
role="alert"
tabIndex={0}
style={{ right: '24px', textAlign: 'center' }}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left'
}}
open={openLgpd}
onClose={handleCloseLgpd}
onKeyDown={handleCloseLgpd}
message="This is a message!"
action={
<Button role="button" color="secondary" size="small" onKeyDown={handleCloseLgpd} onClick {handleCloseLgpd}>
OK
</Button>
}
/>
我还尝试通过将 aria-hidden 属性 添加到该组件及其子组件来忽略这些错误,但它也没有用:
<Snackbar
aria-hidden
tabIndex={0}
style={{ right: '24px', textAlign: 'center' }}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'left'
}}
open={openLgpd}
onClose={handleCloseLgpd}
message="This is a message!"
action={
<Button role="button" color="secondary" size="small" aria-hidden onClick={handleCloseLgpd}>
OK
</Button>
}
/>
渲染后的组件如下所示: snackbar component
当我尝试完全删除该组件时,eslint 在该文件 中根本不存在的一行上返回了完全相同的错误。 我不知道是什么原因造成的。如果有帮助,我会使用 Webpack 模块捆绑器。
在谷歌搜索一两个小时并了解 ESLint 的工作原理后,我能够解决这个问题,但我现在只能 post 在这里找到答案。对于那个很抱歉。 这是我学到的东西:
由于我的代码大部分是用 TypeScript 编写的,ESLint 可能会对 JavaScript 编译代码进行 linting(因为 ESLint 是专门为 JavaScript 而不是 TypeScript 构建的),因此抛出JS 文件行中的错误与我的 TS 文件行不匹配。如果我错了,请随时纠正我,因为我没有深入到足以完全理解这个问题的根本原因,解决它,然后...
为了在 VS Code 中更好地显示 ESLint 错误信息,我安装了它的官方扩展,它会在文本编辑器上高亮显示正确行中的错误(无论您使用的是 JS 还是 TS)并提出快速解决方案。
就是这样,感谢所有发表评论的人。希望这可能有用。