Node.js全局安装的模块无法正常使用
问题阐述
全局安装模块完成之后,无法cmd中使用全局模块,如nodemon
,报错如下:
nodemon : 无法加载文件 D:\Program Files\nodejs\node_global\nodemon.ps1,因为在此系统上 禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
- nodemon --help
+ CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess </font>
禁止运行脚本!
这是由于当前用户没有权限加载这些脚本文件,因为在此系统上禁止运行脚本!
也就是说我们当前用户没有权限,测试一下:
打开 Powershell ,输入
get-ExecutionPolicy
输出:
Restricted
Restricted
是受限制的,表示状态是禁止的
解决方案
1️⃣ 把需要用的全局模块的 bin 目录一个一个添加到环境变量的 Path 中,最麻烦,不实用!
2️⃣ 用管理员权限打开 Powershell 再操作,太麻烦,不采用!
3️⃣ 修改 ExecutionPolicy ,提升权限 ✅
首先,如果这么操作可能会报错
set-ExecutionPolicy RemoteSigned
set-ExecutionPolicy : 对注册表项"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"的访问被拒绝。 要更改默认(LocalMachine)作用域的执行策略,请使用"以管理员身份运行"选项启动 Windows PowerShell。要更改当前用户的执行策略,请运行 “Set-ExecutionPolicy -Scope CurrentUser”。
这样是试图修改全部用户的 ExecutionPolicy
同样还是权限问题,你当前普通用户不可能修改全部用户的 ExecutionPolicy ,权限不够!
同样的,要么以管理员身份打开 Powershell 执行此命令,这样就修改了全部用户的 ExecutionPolicy ,还是不推荐!
🍉退而求其次,只修改当前用户的 ExecutionPolicy √
输入
Set-ExecutionPolicy -Scope CurrentUser
再输入
RemoteSigned
选择 "Y"
即可!
检查一下,再次使用 get-ExecutionPolicy
查看权限,可以看到变为了 RemoteSigned
重启,即可解决问题!