javascript - خطأ عند تشغيل سكربت npm باستخدام Yarn: "ERR spawn EINVAL"
أواجه خطأً عند محاولة تشغيل نص npm الذي يتضمن Yarn. إليك تسلسل الأحداث:
- لقد قمت بتهيئة مشروع باستخدام create-react-app.
- تم إضافة البرنامج النصي التالي إلى ملف package.json الخاص بي
"scripts": {
"lint": "yarn add -D prettier && yarn add -D babel-eslint && npx install-peerdeps --dev eslint-config-airbnb && yarn add -D eslint-config-prettier eslint-plugin-prettier"
}
- عندما أشغل npm run lint، يُطلب مني ما إذا كنت أرغب في استخدام Yarn، وأرد بـ "y".
- ومع ذلك، أتلقى الخطأ التالي: "ERR spawn EINVAL".
حاولت تثبيت Yarn على مستوى النظام باستخدام npm install -g yarn، لكن المشكلة لا تزال قائمة. لقد قمت بالتحقق من أي إعدادات تكوين أو متغيرات بيئة ذات صلة، لكن لم أتمكن من العثور على سبب واضح للخطأ.
بيئتي: Windows 11
> node --version
v20.12.2
> npm --v
10.5.0
> yarn --v
yarn install v1.22.22
الإجابة رقم 1
حدث الخطأ بسبب تحديث أمني في Node.js.
من ذلك المدونة:
من المهم ملاحظة أنه حدث تغيير جوهري لمستخدمي ويندوز الذين يستخدمون
child_process.spawnوchild_process.spawnSync. سيقوم Node.js الآن بإصدار خطأEINVALإذا تم تمرير ملف.batأو.cmdإلىchild_process.spawnوchild_process.spawnSyncبدون تعيين خيارshell. إذا تم تنظيف المدخلات إلىspawn/spawnSync، يمكن للمستخدمين الآن تمرير{ shell: true }كخيار لمنع حدوث أخطاء EINVAL.
نظرًا لأن الأمر الذي قمت بتشغيله (install-peerdeps) استدعى طريقة spawn بدون تعيين هذا الخيار (رابط إلى الكود)، فقد فشل البرنامج النصي مع هذا الخطأ.
قدم ذلك المدونة أيضًا حلاً بديلاً، على الرغم من أنه غير موصى به، ولست متأكدًا مما إذا كان ذلك يعمل مع npx:
بينما من الممكن أيضًا تمرير
--security-revert=CVE-2024-27980للتراجع عن تصحيح الأمان، ننصح بشدة بعدم القيام بذلك.
إذا كنت بحاجة حقًا إلى تثبيت تبعيات الأقران تلقائيًا، قد تحتاج إلى كتابة برنامج نصي خاص بك أو تغيير مدير الحزم الخاص بك إلى npm الذي يدعم هذا بدءًا من الإصدار 7.
الإجابة رقم 2
كنت أواجه هذه المشكلة أيضًا وجربت بعض الأشياء، لكن العودة إلى نسخة Node.js 18 LTS ساعدت والآن التطبيقات تعمل بشكل جيد.
