欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

删除 `cr` eslint(prettier/prettier) 错误的解决方案

最编程 2024-04-30 09:54:19
...

问题

打开 vscode 就会有一堆的黄色的小波浪号,查看信息提示如下错误

Delete `␍` eslint(prettier/prettier)

image.png

解决方案

  • 通过IDE一键切换

image.png

这是评论区掘金同道提供的方法,一般IDE下方状态栏会提供“切换行尾序列”的工具,如上图,一键切换到正确的行尾序列即可。

缺点:

  1. 只能修复当前文件,不能解决整个项目报错的问题。
  2. eslint错误消失,但暂存区多了文件改动记录,对比Working tree也没发现任何不同。需要commit所有文件,多余
  • 最佳方案

问题根源:
罪魁祸首是git的一个配置属性:core.autocrlf。由于历史原因,windows下和linux下的文本文件的换行符不一致。Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)。而MacLinux系统,仅仅使用了换行符LF。老版本的Mac系统使用的是回车符CR

Windows Linux/Mac Old Mac(pre-OSX)
CRLF LF CR
'\n\r' '\n' '\r'

因此,文本文件在不同系统下创建和使用时就会出现不兼容的问题。
我的项目仓库中默认是Linux环境下提交的代码,文件默认是以LF结尾的(工程化需要,统一标准)。
当我用windows电脑git clone代码的时候,若我的autocrlf(在windows下安装git,该选项默认为true)为true,那么文件每行会被自动转成以CRLF结尾,若对文件不做任何修改,pre-commit执行eslint的时候就会提示你删除CR
现在可以理解ctrl+syarn run lint --fix方案为何可以修复eslint错误了吧,因为Git自动将CRLF转换成了LF

现在VScodeNotepad++编辑器都能够自动识别文件的换行符是LF还是CRLF。 如果你用的是windows,文件编码是UTF-8且包含中文,最好全局将autocrlf设置为false亲测有效

git config --global core.autocrlf false

注意:git全局配置之后,你需要重新拉取代码。

参考来源