这个错误是由于 Windows PowerShell 的执行策略限制了运行 .ps1 脚本文件(cnpm.ps1)。Windows 11 默认设置了严格的脚本执行策略(通常是 Restricted),禁止运行未签名的脚本。以下是解决方法的步骤:
解决步骤
- 检查当前执行策略:
打开 PowerShell(以管理员身份运行):
- 按
Win + S,输入PowerShell,右键选择“以管理员身份运行”。 - 输入以下命令查看当前策略:
powershell Get-ExecutionPolicy
通常会显示Restricted(默认值,禁止运行脚本)。
- 修改执行策略:
为允许运行脚本,修改执行策略为较宽松的策略(如RemoteSigned或Unrestricted)。推荐使用RemoteSigned,它允许运行本地脚本,但要求远程脚本有数字签名。
- 在管理员 PowerShell 中运行:
powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned - 按提示输入
Y确认。
- 验证修改:
再次运行:
Get-ExecutionPolicy
确保输出为 RemoteSigned。
- 重新运行 cnpm 命令:
关闭并重新打开 PowerShell(或命令提示符),然后尝试运行cnpm命令,例如:
cnpm install
- (可选)如果仍不生效:
- 确保
cnpm已正确安装。运行以下命令检查:powershell npm list -g cnpm
如果未安装,使用以下命令全局安装:powershell npm install -g cnpm --registry=https://registry.npmmirror.com - 如果路径问题导致,检查
cnpm.ps1文件路径(C:\Users\tianb\AppData\Roaming\npm\)是否存在。
- (可选)绕过策略单次运行:
如果不想永久更改策略,可以临时绕过策略运行脚本:
powershell -ExecutionPolicy Bypass -File C:\Users\tianb\AppData\Roaming\npm\cnpm.ps1
但这不是长期解决方案。
注意事项
- 安全性:将执行策略设为
RemoteSigned是常见做法,适用于大多数开发场景。但如果你的电脑在高安全环境,建议咨询管理员或仅使用Bypass临时运行。 - 管理员权限:某些命令需要管理员权限运行 PowerShell。
- cnpm 替代:如果你遇到 cnpm 的其他问题,可以考虑直接使用
npm或pnpm,避免 cnpm 的兼容性问题。