出现这个的原因:windows 环境下, git 在我们 pull 代码的时候,会自动识别当前的系统环境。将原本的(linux/unix)换行改成对应系统的,在我们提交代码的时候又会转成远程系统环境的(Linux/unix),然后又装了 eslint,默认就是使用 LF,所以就会报这个错误
各种环境下换行符格式
window:CRLF(\r\n 或者^M\n)
mac: CR(\r 或^M)
linux/unix: LF(\n)
解决方式:
1. 在 vscode 的文件代码底部的 CRLF 手动切成 LF, 这样只能让eslint暂时不报错。但是实际上我们 再次pull 下来的时候,git 还是会自动把所有文件全部转成 CRLF,也还是会有报错信息
2. eslint 中的规则配置,在 window 环境下关闭换行符校验,让它提交的时候自动把 CRLF 转成 LF 就可以(貌似我们都没有根本解决这个问题)
"linkbreak-style":["off","windows"]
3. 从 git 拉取代码的时候入手,让 git 依据远程的代码的换行符(LF)pull,不再根据系统去转换格式。同时配置 vscode 换行符为 LF,我的做法是配置好 git 的拉取格式,再把本地原仓库整个删了,然后重新远程拉取一份代码。这样就可以了,命令如下:
git config --global core.autocrlf 有三个配置(看情况选择,我选择了 input)
- true: push 的时候自动将 crlf 转成 LF, pull 的时候转成 crlf(这条配置就需要配置eslint关掉window环境下的换行符校验)
git config --global core.autocrlf true
- input:push 的时候自动将 crlf 转成 LF, pull 代码的时候不自动将 LF 转成 crlf(这条配置,不需要配置eslint,代码格式与远程保持一致,我是用这个)
git config --global core.autocrlf input
- false: 不管是 push 或者 pull 都不转换,原来的文件是什么就是什么
git config --global core.autocrlf false
其他配置:
1、拒绝提交包含混合换行符的文件
git config --global core.safecrlf true
2、允许提交包含混合换行符的文件
git config --global core.safecrlf true
3、提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn
vscode配置: