фон проблемы
существуетWindows
После извлечения нового кода из ноутбука он выполняетсяpre-commit
, возникает следующая ошибка:
Delete `␍`eslint(prettier/prettier)
Вот несколько решений, которые я лично пробовал:
решение
1. Ctrl+S, чтобы сохранить файл
согласно сCrtl+S
Сохраните текущий файл ошибки,eslint
Ошибка исчезает, ноGit
Во временном хранилище больше записей об изменении файлов, сравнитеWorking tree
Разницы не нашел.
Недостаток: нельзя сохранить все файлы один за другим, хлопотно иcommit
, избыточный.
2. ворс пряжи --fix
Легче, чем выше,eslint
Ошибка исчезает, но в области временного хранения появляется больше n записей об изменении файлов, сравнитеWorking tree
Разницы тоже не нашел.
Недостаток: нужноcommit
Все файлы избыточны.
Ссылка: «ошибка Удалить ⏎ красивее/красивее» в файлах .vue``
3. Настройте файл .Prettierrc
в корневом каталоге проекта.prettierrc
можно записать в файл. В самом деле, не позволяйтеprettier
Определяет формат в конце каждой строки файла.
"endOfLine": "auto"
Недостатки: он не совместим с кросс-платформенной разработкой и не идеален с точки зрения фронтенд-инжиниринга.
Ссылка: Почему я продолжаю получать Удалить ‘cr’ [красивее/красивее]?
4. Переключение в один клик через IDE
Это метод, предоставляемый Nuggets в области комментариев. Как правило, строка состояния в нижней части IDE предоставляет инструмент для «переключения последовательности окончания строки». Как показано на рисунке выше, вы можете переключиться на правильный последовательность окончания строки одним щелчком мыши.
Недостатки: Восстановить можно только текущий файл, и проблема сообщения об ошибках всего проекта не решается.
5. Лучшее решение
Корень проблемы:
Виновникgit
Свойство конфигурации:core.autocrlf
По историческим причинам,windows
Сяхэlinux
Символы новой строки в текстовом файле ниже несовместимы.
* Windows在换行的时候,同时使用了回车符CR(carriage-return character)和换行符LF(linefeed character)
* 而Mac和Linux系统,仅仅使用了换行符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+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
Есть соответствующие обсуждения и решения этой проблемы, но ни одно из них не может задеть за душу. Я написал эту статью, чтобы иметь возможность прочитать ее в будущем.Если она будет полезна друзьям, попавшим в беду, автору она никогда не надоест!