وفقًا لـ https://github.com/npm/read-cmd-shim/pull/6 ، يضيف PowerShell Scripts عند تثبيت الحزم العالمية. يتسبب في بعض المتاعب على نظام Windows الذي يحتاج إلى إضافة علامة أمان لتشغيل البرنامج النصي ps1 ، وإلا فإنه يحصل على هذا الخطأ
لا يمكن تحميل * * .ps1 لأن البرامج النصية قيد التشغيل معطلة على هذا النظام
في السابق ، نفدت جميع حزم npm العامة لأن PowerShell سيستخدم البرنامج النصي cmd بدلاً من ذلك. أتوقع مع هذه الإضافة أنها ستسبب الكثير من الارتباك بين الناس ، وخاصة أولئك الذين يستخدمون المحطة المدمجة لـ Visual Studio Code على Windows ، وهي PowerShell.
https://github.com/microsoft/TypeScript/issues/35031
https://stackoverflow.com/questions/58796490/tsc-ps1-cannot-be-loaded-because-running-scripts-is-disabled-on-this-system
وتقترح بعض الإجابات الجديدة التالية حذف ملف ps1.
https://stackoverflow.com/questions/57673913/vsc-powershell-after-npm-updating-packages-ps1-cannot-be-loaded-because-runnin
تضمين التغريدة اكتب الأوامر التالية في بوويرشيل
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
أو
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
بعد تشغيل البرنامج النصي .ps1 PowerShell
تضمين التغريدة
في https://github.com/npm/read-cmd-shim/pull/6 ، أقوم فقط بإضافة مسار استخراج من دعم بوويرشيل.
هذه الوظيفة مخصصة لـ https://github.com/npm/cli/pull/281
إذا كنت تريد معرفة سبب إضافة * .ps عند تثبيت الحزمة ، فالرجاء الاطلاع على هذا: https://github.com/npm/cmd-shim/pull/34
نصوص PowerShell هي أيضًا البرامج النصية الوحيدة التي توفر طريقة مضمنة لتوجيه stdin إلى عملية Node.js ( https://github.com/npm/cmd-shim/pull/43 ) عند تمرير إدخال خط الأنابيب إلى النص.
فقط قم بتثبيت أحدث NPM على جهاز جديد وهذا سلوك مزعج للغاية أثناء استخدامه خارج الصندوق.
الحل المقدم من @ RAJU2529 جيد طالما يمكنك فعل ما تريد على جهازك. على الجهاز المرتبط بالمجال ، يمكن أن يكون هذا الإعداد مدفوعًا بإعدادات المؤسسة ولا يمكن تجاوزه ، حتى لو كان المستخدم مسؤولاً على الجهاز.
هل لدى أي شخص حل بديل آخر ، باستثناء تخفيض إصدار NPM؟
هل تريد حذف كافة نصوص *.ps1
في دليل npm bin؟
@ ExE-Boss هذا ما انتهيت من القيام به الآن ، لكنه في الحقيقة حل بديل ...
توافق على ما سبق أيضًا. أفضل من تغيير سياسة التنفيذ الخاصة بك ... أعلم أنها تعمل ومن المحتمل أن يقوم الجميع والأشخاص بتشغيل نصوص برمجية ولكن ... مجرد سخيفة تمامًا
لقد قمنا مؤخرًا بتحديث خوادم البناء الخاصة بنا إلى أحدث LTS من العقدة.
تستخدم بعض برامج PowerShell-Scripts الخاصة بنا رمزًا مثل:
Start-Process "npm-cli-login" [...] -NoNewWindow
إذا سألت بوويرشيل عن الملف القابل للتنفيذ الذي يستخدمه ( (Get-Command npm-cli-login).Source
) فإنك تحصل على ملفات ps1 التي تم إنشاؤها حديثًا بدلاً من cmd .
تنتهي العملية مع %1 is not a valid win32 application
لأن نص ps1 ليس قابلاً للتنفيذ صالحًا.
هذا تغيير جذري في إصدار ويجب مراجعته على الأقل.
هل تريد حذف كافة نصوص
*.ps1
في دليل npm bin؟
هل لدينا طريقة لإجبار Windows على عدم إنشاء البرنامج النصي .ps1
أثناء استخدام npm link
أو npm i -g ../<package>
؟ إنه لأمر محبط نوعًا ما أن تضطر إلى الانتقال إلى مجلد npm وتنظيف هذه الفوضى طوال الوقت.
أحد الحلول السريعة إذا كان نظامك يحتوي على موجه الأوامر هو إخبار PowerShell باستخدام إصدار cmd بدلاً من ذلك: <package-name>.cmd
على سبيل المثال لـ TypeScript:
بدلا من
tsc -v
الذي يستدعي الآن tsc.ps1 في PowerShell
استعمال
tsc.cmd -v
أحد الحلول السريعة إذا كان نظامك يحتوي على موجه الأوامر هو إخبار PowerShell باستخدام إصدار cmd بدلاً من ذلك:
<package-name>.cmd
نعم ، إذا قمت بإضافة .cmd
بوويرشيل ، فسيستخدم الملف القابل للتنفيذ الصحيح.
ولكن إذا كان لديك إصدار نصوص برمجية يجب ألا تتغير بعد الإصدار ، فلديك احتمالان فقط:
يشير طلب السحب 34 الذي أضاف هذه الميزة إلى أنه إصلاح لمشكلة npm 20699 . عند التحقق من هذه المشكلة ، يبدو أن المشكلة الأساسية هي تمرير حرف العطف كوسيطة أمر في سطر أوامر windows. يتم تفسير ذلك على أنه محدد الأوامر لذا فهو يخطئ.
ومع ذلك ، في سطر أوامر windows ، يمكننا الهروب من حرف العطف بحرف الإقحام. ^&
Longshot ، ولكن هل يمكن أن يكون هذا حلاً بديلاً عمليًا لما تم تضمينه والذي أدى إلى حدوث هذه التغييرات العاجلة؟ هل هناك طريقة ما يمكننا من خلالها اكتشاف أن الحجة مخصّصة لسطر أوامر windows و regex أو إدخال حرف الإقحام في الوسيطة كمهرب؟ هل يعرف أي شخص مثل @ ExE-Boss boss ما إذا كان هناك سبب لعدم تمكننا من معالجة هذه المشكلة باستخدام شيء مشابه؟
يغطي المستند التالي أفضل طريقة للتعامل مع تحليل وسيطة سطر أوامر Windows. استخدمه كدليل؟
https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way
أعتقد أن الأنابيب لا تعمل أيضًا باستخدام البرامج النصية ps1 المتعلقة بهذا.
أحاول استخدام الأدوات التالية الأكثر استخدامًا:
جميلة
أجمل
على سبيل المثال عندما أقوم بتشغيل ما يلي على Powershell:
echo '{"a": 1}' | prettyjson
ستستمر المحطة في انتظار المدخلات حتى يتم الضغط على CTRL + C وتخرج بدون إخراج متوقع.
الحل هو إضافة .cmd
إلى الأمر أو مجرد استخدام cmd بدلاً من ذلك:
echo '{"a": 1}' | prettyjson.cmd
النواتج
a: 1
سؤالي عن stackoverflow: https://stackoverflow.com/questions/62951533/why-pipes-are-not-working-on-powershell-for-various-nodejs-cli-tools
عذرًا ، لقد تذكرت للتو أنه تم التعليق عليه هنا قبل https://github.com/npm/cli/issues/470#issuecomment -568165144 حول أنابيب stdin والعلاقات العامة هنا https://github.com/npm/cmd-shim / سحب / 43 . ولكن مع ذلك ، يبدو أن استخدام .cmd
يعمل مع الأنابيب.
التعليق الأكثر فائدة
هل تريد حذف كافة نصوص
*.ps1
في دليل npm bin؟