npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1
问题描述
使用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就正常了。