在 PowerShell 中,如果遇到 **执行策略(Execution Policy)** 阻止运行 `npm` 脚本(如 `npm run` 或类似命令),你可以通过以下方法解决 - Winmax Music 

在 PowerShell 中,如果遇到 执行策略(Execution Policy) 阻止运行 npm 脚本(如 npm run 或类似命令),你可以通过以下方法解决:


方法 1:临时更改执行策略(推荐)

运行以下命令,将执行策略临时设置为 Bypass(仅对当前会话有效,关闭 PowerShell 后恢复默认):

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
  • Bypass:绕过所有限制,不阻止脚本运行,也不显示警告。
  • -Scope Process:仅对当前 PowerShell 会话生效,不影响系统全局设置。

方法 2:永久更改执行策略(需管理员权限)

如果需要永久允许脚本运行(需管理员权限):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine -Force
  • RemoteSigned:允许本地脚本运行,但远程下载的脚本需数字签名(推荐安全策略)。
  • -Scope LocalMachine:对所有用户生效。
⚠️ 注意:永久修改执行策略可能会降低安全性,建议仅在信任的环境中使用。

方法 3:直接运行脚本时绕过策略

在运行 npm 命令时,直接附加 -ExecutionPolicy Bypass 参数:

powershell -ExecutionPolicy Bypass -Command "npm run your-script"

方法 4:检查是否是 npm 脚本本身的问题

如果问题仅出现在某些 npm 脚本中,可能是脚本调用了 PowerShell 命令。检查 package.json 中的脚本内容,例如:

{
  "scripts": {
    "start": "powershell ./script.ps1"  // 可能需要调整执行策略
  }
}

可以改为直接调用可执行文件(如 node),避免依赖 PowerShell。


补充说明

  1. 查看当前执行策略

    Get-ExecutionPolicy -List
    • 输出结果会显示不同作用域(LocalMachineCurrentUserProcess)的策略。
  2. 恢复默认策略(如需还原):

    Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine -Force

推荐方案

  • 开发环境:临时使用 Bypass(方法 1)。
  • 生产环境:使用 RemoteSigned(方法 2)并确保脚本来源可信。

如果问题仍未解决,请提供具体的错误信息或 npm 脚本内容,以便进一步诊断。

标签: PowerShell, npm



没事发点牢骚,评论几句?!Nothing to complain about, comment a few words.