問題描述
使用git bash, cmd運行npm都可以,但是用Power Shell運行npm,卻報錯:
npm : 無法加載文件 C:\Program Files\nodejs\npm.ps1,因為在此系統上禁止運行腳本。有關詳細信息,請參閱 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ npm
+ ~~~
+ CategoryInfo ? ? ? ? ?: SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
原因分析
該問題通常發生在安裝nvm之后,環境變量發生變化,npm.cmd執行方式也發生變化。而Power Shell默認執行策略比較嚴格,是Restricted,阻止了nvm相關腳本的執行。
解決方案
兩種方案,推薦第二種。
方案一,把npm.cmd的運行路徑加入到環境變量path中。例如:
"C:\Users\zxcv\AppData\Roaming\nvm\v22.14.0\node_modules\npm\bin\"
這會導致一個問題是,后面用nvm use xxx切換了node版本后,運行npm可能會有問題。
方案二,修改Powser Shell的執行策略。
1. 右鍵開始菜單,選擇“終端管理員”,打開PS窗口。
2. 查看當前執行策略:
Get-ExecutionPolicy
默認顯示Restricted.
3. 修改策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
4. 驗證修改結果:
Get-ExecutionPolicy
應顯示為:RemoteSigned。
含義為:允許運行本地腳本,遠程腳本需簽名(平衡安全與便利)。
5. 重啟vs code的power shell終端,再運行npm就正常了。