这个错误是由于 Windows PowerShell 的执行策略限制了运行 .ps1 脚本文件(cnpm.ps1)。Windows 11 默认设置了严格的脚本执行策略(通常是 Restricted),禁止运行未签名的脚本。以下是解决方法的步骤:

解决步骤

  1. 检查当前执行策略
    打开 PowerShell(以管理员身份运行):
  • Win + S,输入 PowerShell,右键选择“以管理员身份运行”。
  • 输入以下命令查看当前策略:
    powershell Get-ExecutionPolicy
    通常会显示 Restricted(默认值,禁止运行脚本)。
  1. 修改执行策略
    为允许运行脚本,修改执行策略为较宽松的策略(如 RemoteSignedUnrestricted)。推荐使用 RemoteSigned,它允许运行本地脚本,但要求远程脚本有数字签名。
  • 在管理员 PowerShell 中运行:
    powershell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
  • 按提示输入 Y 确认。
  1. 验证修改
    再次运行:
   Get-ExecutionPolicy

确保输出为 RemoteSigned

  1. 重新运行 cnpm 命令
    关闭并重新打开 PowerShell(或命令提示符),然后尝试运行 cnpm 命令,例如:
   cnpm install
  1. (可选)如果仍不生效
  • 确保 cnpm 已正确安装。运行以下命令检查:
    powershell npm list -g cnpm
    如果未安装,使用以下命令全局安装:
    powershell npm install -g cnpm --registry=https://registry.npmmirror.com
  • 如果路径问题导致,检查 cnpm.ps1 文件路径(C:\Users\tianb\AppData\Roaming\npm\)是否存在。
  1. (可选)绕过策略单次运行
    如果不想永久更改策略,可以临时绕过策略运行脚本:
   powershell -ExecutionPolicy Bypass -File C:\Users\tianb\AppData\Roaming\npm\cnpm.ps1

但这不是长期解决方案。

注意事项

  • 安全性:将执行策略设为 RemoteSigned 是常见做法,适用于大多数开发场景。但如果你的电脑在高安全环境,建议咨询管理员或仅使用 Bypass 临时运行。
  • 管理员权限:某些命令需要管理员权限运行 PowerShell。
  • cnpm 替代:如果你遇到 cnpm 的其他问题,可以考虑直接使用 npmpnpm,避免 cnpm 的兼容性问题。