无法加载文件,因为在此系统上禁止运行脚本?终级解决方案!
问题原因
你遇到的这个错误信息: 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。
意思是,Windows PowerShell 的 执行策略 (Execution Policy) 阻止了你运行 vue.ps1 这个脚本文件。
- 什么是 PowerShell 执行策略? 这是 Windows 的一项安全功能,旨在防止用户意外运行恶意脚本。默认情况下,很多 Windows 系统的执行策略被设置为 Restricted(受限制),这意味着它不允许运行任何 .ps1 脚本文件。
- 为什么运行 vue 命令会触发这个? 当你在 Windows 上通过 npm 或 yarn 全局安装了 Vue CLI (@vue/cli) 后,它会创建一个名为 vue 的命令。在 PowerShell 环境中,这个 vue 命令实际上是指向 vue.ps1 这个 PowerShell 脚本的。因此,每次你运行 vue create ... 或 vue --version 时,都在尝试执行这个脚本,从而触发了安全策略。
解决方案
你需要更改 PowerShell 的执行策略,允许脚本运行。推荐使用 RemoteSigned 策略,它在安全性和便利性之间取得了很好的平衡。
RemoteSigned 策略的含义是:
- 可以运行本地创建的脚本。
- 从网络上下载的脚本,必须有受信任的发布者的数字签名才能运行。
对于开发来说,这个策略足够安全且方便。
操作步骤 (推荐)
你需要以管理员身份打开 PowerShell 来执行这个更改。
- 以管理员身份打开 PowerShell点击 开始 菜单。输入 PowerShell。在搜索结果中找到 "Windows PowerShell"。右键点击它,选择 “以管理员身份运行”。
- 查看当前的执行策略 (可选) 在打开的管理员 PowerShell 窗口中,输入以下命令并回车,可以查看当前的策略。你很可能会看到 Restricted。
- Get-ExecutionPolicy
- 设置新的执行策略 输入以下命令,然后按回车。
- Set-ExecutionPolicy RemoteSigned
- 确认更改 系统会询问你是否要更改执行策略,输入 Y (是) 或 A (全是),然后按回车。
- 执行策略更改 执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略? [Y] 是(Y) [A]全是(A) [N] 否(N) [L] 全不是(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): A
- 验证更改 再次运行 Get-ExecutionPolicy,确认策略已经变为 RemoteSigned。
- 完成! 现在,你可以关闭这个管理员 PowerShell 窗口,然后重新打开一个普通的终端(比如 VS Code 的集成终端、Windows Terminal 或者普通的 PowerShell/CMD 窗口),再次尝试运行你的 vue 命令,它应该可以正常工作了。
- vue --version # 或者 vue create my-awesome-project
其他方案 (如果不想更改全局策略)
如果你没有管理员权限,或者不想更改整个系统的策略,你可以只为当前进程设置策略。
在你需要运行 vue 命令的那个终端窗口里,首先执行以下命令:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
- -Scope Process:表示此设置仅对当前的 PowerShell 窗口有效,关闭后即失效。
- -ExecutionPolicy Bypass:表示忽略所有策略,直接运行。
优点:
- 不需要管理员权限。
- 不会永久性地改变系统安全设置。
缺点:
- 每次打开新的终端窗口需要重新运行一次这个命令。
总结
方案 | 命令 | 管理员权限 | 效果 | 推荐度 |
推荐方案 | Set-ExecutionPolicy RemoteSigned | 需要 | 一次性设置,永久有效 | |
临时方案 | Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass | 不需要 | 仅对当前窗口有效 |
对于大多数开发者来说,第一种方案是最佳选择,一劳永逸地解决了类似问题。