这个错误是由于 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 的兼容性问题。