Delete `␍`eslint(prettier/prettier) 错误的解决方案

Delete ‘␍’ eslint(prettier/prettier) 错误的解决方案


问题背景

Windows笔记本上新拉完代码,在执行pre-commit时,出现如下错误:

Delete `␍`eslint(prettier/prettier)

错误图片

下面是几种个人尝试过的解决方案:

解决方案

一、Crtl+S保存文件

Crtl+S保存当前报错文件,eslint错误消失,但是Git暂存区多了个文件改动记录,对比Working tree没发现任何不同。
在这里插入图片描述

缺点:你不可能一一保存所有文件,麻烦,还要commit,多余。

二、yarn run lint --fix

比上面省事,eslint错误消失,但暂存区多了n 个文件改动记录,对比Working tree也没发现任何不同。

缺点:需要commit所有文件,多余。

参考资料:“error Delete ⏎ prettier/prettier” in .vue files``

三、配置.prettierrc文件

在项目根目录下的.prettierrc文件中写入即可。其实就是不让prettier检测文件每行结束的格式.

"endOfLine": "auto"

缺点:不能兼容跨平台开发,从前端工程化上讲没有做到尽善尽美。

参考资料:Why do I keep getting Delete ‘cr’ [prettier/prettier]?

四、通过IDE一键切换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQxZMB7g-1673344596978)(https://segmentfault.com/img/bVcPuZP “image”)]

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

缺点:只能修复当前文件,不能解决整个项目报错的问题。

五、最佳方案

问题根源:

罪魁祸首是git的一个配置属性:core.autocrlf

由于历史原因,windows下和linux下的文本文件的换行符不一致。

  • Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)
  • MacLinux系统,仅仅使用了换行符LF
  • 老版本的Mac系统使用的是回车符CR
WindowsLinux/MacOld Mac(pre-OSX)
CRLFLFCR
‘\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全局配置之后,你需要重新拉取代码。

总结

查找了不少资料,stackoverflowgithub上对这个问题有相应的讨论和解决办法,但都不能触及灵魂。作下此文,以便日后翻阅,若对遇坑的朋友有所帮助,笔者乐此不疲!

  • 28
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个警告是由Prettier插件引起的,它提示你删除了一个特殊字符``。这个字符通常是由于不同操作系统之间的换行符差异引起的。在Windows系统中,换行符是由回车符(`CR`)和换行符(`LF`)组成的,而在Unix和Linux系统中,换行符只是一个换行符(`LF`)。因此,当你从文库中复制代码时,可能会出现这个特殊字符。Prettier插件会检测到这个字符并给出警告,建议你删除它。你可以通过运行`npm run lint --fix`命令来修复这个警告,或者执行`git config --global core.autocrlf false`命令来关闭Git的自动换行符转换功能。不过,这个警告并不会影响项目的运行,所以你也可以选择在打包之前再执行上述步骤。\[1\]\[3\] #### 引用[.reference_title] - *1* [Vue 编译错误 warning Delete `` prettier/prettier](https://blog.csdn.net/jw19950424/article/details/125674331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Vue 之 编译之 处理 warning Delete `` prettier/prettier](https://blog.csdn.net/u014361280/article/details/124608683)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [《存档》报错-warning Delete `` prettier/prettier](https://blog.csdn.net/good007boy/article/details/120173164)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值