Sesuai https://github.com/npm/read-cmd-shim/pull/6 menambahkan Skrip PowerShell saat menginstal paket global. Ini menyebabkan beberapa kerumitan pada Windows yang perlu menambahkan bendera keamanan untuk menjalankan skrip ps1, jika tidak maka akan terjadi kesalahan ini
* * .ps1 tidak dapat dimuat karena menjalankan skrip dinonaktifkan pada sistem ini
Sebelumnya, semua paket npm global kehabisan kotak karena PowerShell akan menggunakan skrip cmd sebagai gantinya. Saya memperkirakan dengan penambahan ini akan menyebabkan banyak kebingungan di antara orang-orang, terutama mereka yang menggunakan terminal built-in Visual Studio Code di Windows, yaitu 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
Dan beberapa jawaban yang lebih baru berikut bahkan menyarankan untuk menghapus file ps1.
https://stackoverflow.com/questions/57673913/vsc-powershell-after-npm-updating-packages-ps1-cannot-be-loaded-because-runnin
@Tokopedia ketik perintah berikut di PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
atau
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
setelah menjalankan skrip .ps1 PowerShell Anda
@Tokopedia
Di https://github.com/npm/read-cmd-shim/pull/6 , saya hanya menambahkan jalur ekstrak dari dukungan PowerShell.
Fungsi ini untuk https://github.com/npm/cli/pull/281
Jika Anda ingin tahu mengapa * .ps ditambahkan saat menginstal paket, silakan lihat ini: https://github.com/npm/cmd-shim/pull/34
Skrip PowerShell juga satu-satunya yang menyediakan cara bawaan untuk menyalurkan stdin melalui proses Node.js ( https://github.com/npm/cmd-shim/pull/43 ) ketika masukan pipeline telah diteruskan ke naskah.
Baru saja menginstal NPM terbaru di mesin baru dan ini merupakan perilaku yang sangat mengganggu saat digunakan untuk bekerja di luar kotak.
Solusi yang diberikan oleh @ RAJU2529 baik-baik saja selama Anda dapat melakukan apa pun yang Anda inginkan pada mesin Anda. Pada mesin yang bergabung dengan domain, pengaturan ini dapat didorong oleh pengaturan organisasi dan tidak dapat diganti, bahkan jika pengguna adalah admin pada mesin.
Apakah ada yang punya solusi lain, kecuali menurunkan versi NPM?
Hapus semua *.ps1
skrip di direktori npm bin?
@ ExE-Boss itulah yang akhirnya saya lakukan untuk saat ini, tetapi ini benar-benar solusi ...
Setuju dengan yang di atas juga. Lebih baik daripada mengubah kebijakan eksekusi Anda ... Saya tahu ini berhasil dan semua orang cenderung menjalankan skrip tetapi ... benar-benar konyol
Kami baru-baru ini memperbarui server build kami ke LTS node terbaru.
Beberapa PowerShell-Scripts kami menggunakan kode seperti:
Start-Process "npm-cli-login" [...] -NoNewWindow
Jika Anda bertanya PowerShell yang dieksekusi menggunakan ( (Get-Command npm-cli-login).Source
) Anda mendapatkan PS1 yang baru dibuat -Files bukan cmd.
Proses keluar dengan %1 is not a valid win32 application
karena skrip ps1 tidak dapat dijalankan secara valid.
Ini adalah perubahan yang mengganggu dalam suatu versi dan setidaknya harus ditinjau.
Hapus semua
*.ps1
skrip di direktori npm bin?
Apakah kita memiliki cara untuk memaksa Windows agar tidak membuat skrip .ps1
saat menggunakan npm link
atau npm i -g ../<package>
? Agak frustasi harus membuka folder npm dan membersihkan kekacauan ini sepanjang waktu.
Satu solusi cepat jika sistem Anda memiliki Command Prompt adalah memberi tahu PowerShell untuk menggunakan versi cmd sebagai gantinya: <package-name>.cmd
Misalnya untuk TypeScript:
dari pada
tsc -v
yang sekarang memanggil tsc.ps1 di PowerShell
menggunakan
tsc.cmd -v
Satu solusi cepat jika sistem Anda memiliki Command Prompt adalah memberi tahu PowerShell untuk menggunakan versi cmd sebagai gantinya:
<package-name>.cmd
Ya, jika Anda menambahkan .cmd
powershell menggunakan file eksekusi yang benar.
Tetapi jika Anda memiliki versi skrip build yang seharusnya tidak berubah setelah rilis, Anda hanya memiliki dua kemungkinan:
Permintaan tarik 34 yang menambahkan fitur ini merujuknya sebagai perbaikan untuk masalah npm 20699 . Memeriksa masalah itu, sepertinya masalah intinya adalah meneruskan karakter ampersand sebagai argumen perintah pada baris perintah windows. Itu diartikan sebagai pembatas perintah sehingga error.
Namun, di baris perintah windows, kita bisa melepaskan karakter ampersand dengan tanda sisipan. ^&
Longshot, tetapi dapatkah ini menjadi solusi alternatif yang layak untuk apa yang diterapkan yang memperkenalkan perubahan yang merusak ini? Adakah cara agar kita dapat mendeteksi bahwa argumen ditujukan untuk baris perintah windows dan regex atau memasukkan karakter tanda sisipan ke dalam argumen sebagai pelarian? Apakah ada orang seperti @ Boss ExE-Boss yang tahu jika ada alasan mengapa kami tidak dapat mengatasi masalah ini menggunakan sesuatu yang serupa?
Dokumen berikut mencakup cara terbaik untuk menangani penguraian argumen baris perintah windows. Gunakan sebagai panduan?
https://docs.microsoft.com/en-us/archive/blogs/twistylittlepassagesallalike/everyone-quotes-command-line-arguments-the-wrong-way
Saya pikir pipa juga tidak berfungsi menggunakan skrip ps1 yang terkait dengan ini.
Saya mencoba menggunakan alat yang sangat sering digunakan berikut ini:
prettyjson
lebih cantik
Misalnya ketika saya menjalankan yang berikut di Powershell:
echo '{"a": 1}' | prettyjson
Terminal akan terus menunggu masukan sampai CTRL + C ditekan dan keluar tanpa keluaran yang diharapkan.
Solusinya adalah dengan menambahkan .cmd
ke perintah atau cukup gunakan cmd sebagai gantinya:
echo '{"a": 1}' | prettyjson.cmd
Keluaran
a: 1
Pertanyaan saya tentang stackoverflow: https://stackoverflow.com/questions/62951533/why-pipes-are-not-working-on-powershell-for-various-nodejs-cli-tools
Maaf, saya baru ingat itu dikomentari di sini sebelum https://github.com/npm/cli/issues/470#issuecomment -568165144 tentang pipa stdin dan PR ada di sini https://github.com/npm/cmd-shim / pull / 43 . Tapi tetap saja, menggunakan .cmd
tampaknya berhasil untuk pipa.
Komentar yang paling membantu
Hapus semua
*.ps1
skrip di direktori npm bin?