分类 默认分类 下的文章

问题背景

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]?](https://stackoverflow.com/questions/53516594/why-do-i-keep-getting-delete-cr-prettier-prettier "参考资料:Why do I keep getting Delete ‘cr’ [prettier/prettier]?")

四、通过IDE一键切换

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

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

五、最佳方案

问题根源:
罪魁祸首是git的一个配置属性:core.autocrlf
由于历史原因,windows下和linux下的文本文件的换行符不一致。

Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)
而Mac和Linux系统,仅仅使用了换行符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+s和yarn run lint --fix方案为何可以修复eslint错误了吧,因为Git自动将CRLF转换成了LF。

最佳实践:

现在VScode,Notepad++编辑器都能够自动识别文件的换行符是LF还是CRLF。

如果你用的是windows,文件编码是UTF-8且包含中文,最好全局将autocrlf设置为false。

git config --global core.autocrlf false

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

总结

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

原文:
Delete eslint(prettier/prettier) 错误的解决方案 错误的解决方案")

这个功能是在 SSMS16.3(版本号13.0.15700.28)中增加的,如需使用该功能,需要升级自己的客户端版本在此或之上即可

以下为微软官方内容

宣布SQL Server Management Studio -16.3(2016年8月)版本

版本号:13.0.15700.28

此版本中的新功能:
1.
2.
3.
4.
5.
6.
7.支持在SSMS Object Explorer的“数据库”节点中进行过滤。导航到“对象资源管理器”中的“数据库”节点,然后单击“对象资源管理器”工具栏中的过滤器图标以过滤数据库列表。

93252-6ktos2j7p2l.png

步骤:

设置fiddler https拦截
重置pc 证书
重启 fiddler(因为重置后重启才会生效)


设置fiddler 生成证书的引擎,“CertEnroll engine”引擎测试有效(更改将需要重新启动。 重新启动后,为确保适当的信任,请禁用 HTTPS 解密,删除旧证书,然后重新启用解密。)
重启 fiddler


安装pc 证书
取消https解密(不取消解密的话,部分请求抓取不到甚至直接失败)
重启 fiddler


手机网络连pc的代理地址
手机证书下载
手机证书安装

- 阅读剩余部分 -