発生した問題
npmコマンドを実行しようとしたところ、以下のようなセキュリティエラーが発生しました。
npm : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Program Files\nodejs\npm.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照
してください。
+ npm run install:all
+ ~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
原因
PowerShellの実行ポリシーが制限されており、スクリプトの実行が許可されていないことが原因でした。
解決手順
1. PowerShellのインストール
最新のPowerShellをwingetを使用してインストールします:
winget search Microsoft.PowerShell
2. 現在の実行ポリシーの確認
PowerShellを管理者権限で起動し、以下のコマンドで現在の実行ポリシーを確認します:
Get-ExecutionPolicy
結果が"Restricted"であることを確認しました。
3. 実行ポリシーの変更
以下のコマンドを実行して、実行ポリシーを"RemoteSigned"に変更します:
Set-ExecutionPolicy RemoteSigned
実行ポリシーについて
PowerShellの実行ポリシーには以下の種類があります:
実行ポリシー | 署名あり | 署名なし/ローカル | 署名なし/非ローカル | 説明 |
---|---|---|---|---|
Restricted | x | x | x | すべてのスクリプトの実行を制限 (初期設定) |
AllSigned | o | x | x | 署名のあるスクリプトのみ実行可能 |
RemoteSigned | o | o | x | ローカル上のスクリプトと非ローカル上の署名のあるスクリプトのみ実行可能 |
Unrestricted | o | o | △ | すべてのスクリプトが実行可能だが非ローカル上のスクリプトは実行時に許可が必要 |
Bypass | o | o | o | すべてのスクリプトが実行可能 |
この設定変更後、npmコマンドが正常に実行できるようになりました。