本人使用的是Windows系统,Unix/Linux/macOS系统也可参照此方法解决问题
报错如图:
(如果你只想解决报错的话直接下翻到解决方法,想了解原理的话请耐心看完)
在这之前,我们先来了解一下什么是行尾符(也叫换行符/行尾序列)。
行尾符是用于标记文本文件中一行结束的字符,不同的操作系统使用不同的行尾符:
-
LF (
Unix/Linux/macOS:这些系统使用单个 LF 字符来表示行尾。\n
): -
CRLF (
Windows:这些系统使用两个字符 CR 和 LF 来表示行尾\r\n
):
图中报错通常是由于文件的行尾符不一致导致的,VSCode 提示你删除 ␍
,即删除\r字符。
我用的是Windows系统,为什么他会提示我删除\r字符呢?前面不是说windows使用\r \n 吗?
出现原因:
1.图中vscode提示是由于使用小皮(prettier)引起的报错,
打开设置,搜索” prettier “,找到 ” 指定 Prettier 使用的换行符 “,
如图:一般来说,Prettier的 都是默LF,导致报错,
将其改为crlf即可
2.在使用 Git 推送和拉取代码时,git将行尾符更改,导致代码报错
Git 提供了几个配置选项来处理行尾符(EOL)的问题,确保在不同操作系统之间的一致性。以 下是这些配置选项及其作用:
-
core.autocrlf
:true
:在提交时将所有行尾符转换为 LF,在检出时将所有行尾符转换为 CRLF(适用于 Windows 用户)。input
:在提交时将所有行尾符转换为 LF,但在检出时不进行转换(适用于 Linux 和 macOS 用户)。false
:不进行任何转换(适用于 Linux 和 macOS 用户)。
-
core.eol
:lf
:设置存储库中的文件使用 LF 作为行尾符。crlf
:设置存储库中的文件使用 CRLF 作为行尾符。
可以通过以下命令检查当前的 Git 配置:
git config --get core.autocrlf
git config --get core.eol
推荐设置:
-
对于 Windows 用户:
将 core.autocrlf
设置为 true:
git config --global core.autocrlf true
- 对于 Linux 和 macOS 用户:
将 core.autocrlf
设置为 input
:
git config --global core.autocrlf input
-
在项目中统一行尾符
在项目根目录下创建一个 .gitattributes
文件,并添加以下内容:
这个配置告诉 Git 将所有文本文件的行尾符统一为 LF(或CRLF,根据你的实际情况)
# .gitattributes
* text=auto eol=lf
3.当你在一个跨平台团队中工作,你在一个操作系统中创建或编辑文件,然后在另一个操作系统中打开时,可能会遇到这种不一致的问题
解决方法:
1.单文件直接转换(只能救急,治标不治本):
- 在 VSCode 右下角的状态栏,可以看到文件当前使用的换行符格式,目前显示为 CRLF
- 点击这个换行符指示,弹出一个选项菜单,选择 LF来替换文件中的 CRLF。
- 此时保存文件,VSCode 会自动将所有的 ␍ 删除并转换为 LF 换行格式(但是只有该文件生效)。如图:
2.调整小皮的格式验证:
- 打开设置,搜索” prettier “,找到” 指定 Prettier 使用的换行符 “,如图:
- 一般来说,Prettier的 都是默LF,导致报错,将其改为 crlf 即可
3.全局设置行尾符:
- 打开 VSCode 设置(点击左下角的齿轮图标,然后选择
Settings
)。 - 搜索
files.eol
。 - 设置
files.eol
为你希望的行尾符格式,例如:"files.eol": "\r\n" // 对应 CRLF
4.在项目根目录下创建一个 .editorconfig
文件,并添加以下内容:
# .editorconfig
root = true
[*]
charset = utf-8
end_of_line = crlf
indent_style = space
indent_size = 2
这个配置告诉 VSCode 和其他支持 .editorconfig
的编辑器将所有文本文件的行尾符统一为 CRLF
。
- 安装扩展插件来帮助管理行尾符,例如
EditorConfig for VS Code
,它可以自动根据.editorconfig
文件中的设置来调整文件的编码和行尾符。
如果以上内容对你有所帮助的话,麻烦给我点个赞,谢谢!