جافا سكريبت - كان متوقعاً أن تكون فواصل الأسطر 'LF' ولكن تم العثور على 'CRLF' linebreak-style


عند استخدام eslint في مشروع gulp واجهت مشكلة مع خطأ مثل هذا
Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style وأنا أستخدم بيئة Windows لتشغيل gulp وسجل الخطأ الكامل موضح أدناه

 Kiran (master *) Lesson 4 $ gulp
 Using gulpfile c:\Users\Sai\Desktop\web-build-tools\4\
 gulpfile.js
 Starting 'styles'...
 Finished 'styles' after 17 ms
 Starting 'lint'...
 'lint' errored after 1.14 s
 ESLintError in plugin 'gulp-eslint'
 sage: Expected linebreaks to be 'LF' but found 'CRLF'.
 ails: fileName: c:\Users\Sai\Desktop\web-build-tools\4\js\extra.js



$>Users\Sai\Desktop\web-build-tools\4\js\extra.js
error  Expected linebreaks to be 'LF' but found 'CRLF'  linebreak-style

لقد قمت أيضًا بتضمين ملف extra.js حيث يشير الخطأ إلى احتمال وجود خطأ.

function getWindowHeight() {
    return window.innerHeight;
}

getWindowHeight();

الإجابة رقم 1

تحقق مما إذا كنت قد قمت بتكوين قاعدة linebreak-style كما هو موضح أدناه في ملف .eslintrc الخاص بك أو في كود المصدر:

/*eslint linebreak-style: ["error", "unix"]*/

نظرًا لأنك تعمل على ويندوز، قد ترغب في استخدام هذه القاعدة بدلاً من ذلك:

/*eslint linebreak-style: ["error", "windows"]*/

راجع توثيق linebreak-style:

عند التطوير مع العديد من الأشخاص الذين يستخدمون محررات مختلفة، وتطبيقات VCS وأنظمة تشغيل مختلفة، قد يحدث أن يتم كتابة نهايات أسطر مختلفة من قبل أي من المذكورين (قد يحدث ذلك بشكل خاص عند استخدام إصدارات ويندوز وماك من SourceTree معًا).

فواصل الأسطر (الأسطر الجديدة) المستخدمة في نظام تشغيل ويندوز عادة ما تكون عائدات المؤشر (CR) متبوعة بتغذية السطر (LF) مما يجعلها عائد مؤشر وتغذية السطر (CRLF)، بينما يستخدم لينكس ويونكس تغذية سطر بسيطة (LF). التسلسلات التحكمية المقابلة هي "\n" (لـ LF) و "\r\n" لـ (CRLF).

هذه قاعدة يمكن إصلاحها تلقائيًا. خيار --fix على سطر الأوامر يصلح المشكلات المبلغ عنها بواسطة هذه القاعدة تلقائيًا.

ولكن إذا كنت ترغب في الاحتفاظ بنهايات الأسطر CRLF في الشيفرة الخاصة بك (كما أنك تعمل على ويندوز) لا تستخدم خيار fix.

الإجابة رقم 2

وجدت أنه مفيد (حين أردت تجاهل فواصل الأسطر وعدم تغيير أي ملفات) تجاهلها في ملف .eslintrc باستخدام linebreak-style وفقًا لهذا الجواب: https://stackoverflow.com/a/43008668/1129108

module.exports = {
  extends: 'google',
  quotes: [2, 'single'],
  globals: {
    SwaggerEditor: false
  },
  env: {
    browser: true
  },
  rules:{
    "linebreak-style": 0
  }
};

الإجابة رقم 3

إذا كنت تستخدم vscode وتعمل على ويندوز، سأوصيك بـ النقر على الخيار في أسفل يمين النافذة وتعيينه إلى LF من CRLF. لأنه لا ينبغي علينا إيقاف التكوين لمجرد إزالة الأخطاء على ويندوز

إذا لم ترَ LF/CRLF، فانقر بزر الماوس الأيمن على شريط الحالة واختر نهاية السطر في المحرر.

الإجابة رقم 4

إليك طريقة جيدة حقًا لإدارة هذا الخطأ. يمكنك وضع السطر أدناه في ملف .eslintrc.js.

استنادًا إلى نظام التشغيل، سيأخذ نهايات الأسطر المناسبة.

rules: {
        'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'],
 }

الإجابة رقم 5

إذا كنت تريدها في crlf (نهاية السطر في ويندوز)، اذهب إلى ملف -> تفضيلات -> الإعدادات. اكتب "نهاية السطر" في تبويب المستخدم وتأكد من أن Files: Eol مضبوط على \r\n وإذا كنت تستخدم امتداد Prettier، تأكد من أن Prettier: End of Line مضبوط على crlf.

أخيرًا، في ملف eslintrc الخاص بك، أضف هذا القاعدة: 'linebreak-style': ['error', 'windows']

الإجابة رقم 6

أضف إلى قاعدتنا في ملف .eslintrc 'linebreak-style':0 في Vue js

  rules: {
    'linebreak-style':0,
  }

الإجابة رقم 7

git config core.autocrlf false

git rm --cached -r .

git reset --hard

الإجابة رقم 8

قمت للتو بجعل معامل autocrlf في ملف .gitconfig false وأعدت استنساخ الكود. لقد نجح!

[core] autocrlf=false

الإجابة رقم 9

حدث نفس الموقف عندما كنت أستخدم VSCode مع eslint. إذا كنت تستخدم VSCode،

1 - انقر على المنطقة التي يمكن أن يكون اسمها كل من LF أو CRLF الموجودة في أسفل يمين VScode.

2 - اختر LF من القائمة المنسدلة.

لقد نجح ذلك معي.

الإجابة رقم 10

حدث معي لأنني نفذت git config core.autocrlf true ونسيت أن أعود مرة أخرى.

بعد ذلك، عندما أقوم بعمل checkout/ pull للكود الجديد، تم استبدال جميع LF (فاصل الأسطر في Unix) بـ CRLF (فاصل الأسطر في Windows).

لقد شغَّلت برنامج الفحص، وجميع رسائل الخطأ هي متوقع وجود فواصل الأسطر 'LF' ولكن تم العثور على 'CRLF'

لإصلاح المشكلة، قمت بالتحقق من قيمة autocrlf عن طريق تشغيل git config --list | grep autocrlf وحصلت على:

core.autocrlf=true
core.autocrlf=false

لقد قمت بتحرير إعدادات GIT العالمية ~/.gitconfig واستبدلت autocrlf=true بـ autocrlf=false.

بعد ذلك، ذهبت إلى مشروعي وقمت بالتالي (بالافتراض أن الكود موجود في مجلد src/):

CURRENT_BRANCH=$(git branch | grep \* | cut -d ' ' -f2);
rm -rf src/*
git checkout $CURRENT_BRANCH src/

الإجابة رقم 11

إذا كنت تستخدم vscode، أوصيك بالنقر على الخيار في أسفل يمين النافذة وضبطه على LF بدلاً من CRLF.. هذا أصلح أخطائي

الإجابة رقم 12

في حال أردت التغيير إلى LF وأنت تستخدم VS Code، يمكنك فعل ذلك لكل ملف على النحو التالي: