解决PowerShell或vscode无法启动yarn的问题

902 阅读2分钟

问题现象:

  • 在PowerShell中启动yarn时报错:

yarn : 无法加载文件 C:\Users\{{username}}\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ yarn serve
+ ~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

     如下图:

1.png

  • 在vscode的终端中启动yarn报错:

系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_
Execution_Policies。
所在位置 行:1 字符: 1
+ yarn serve
+ ~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

     如下图:

2.png

原因分析

既然报错中说明了参阅地址,那么我们先看下文档上怎么说的:

Restricted

  • Windows 客户端计算机的默认执行策略。
  • 允许单个命令,但不允许脚本。
  • 阻止运行所有脚本文件,包括格式化和配置文件 () .ps1xml 、模块脚本文件 (.psm1) ,以及 PowerShell 配置文件 () .ps1 。

也就是说PowerShell默认是不允许文件和脚本运行的,那么我们给它更改一下运行策略,允许运行脚本就可以了。 那么为什么vscode中也会出现类似的报错呢? 我们观察terminal的面板右侧会发现vscode默认也是启动的powershell,所以就出现了如上报错。(这个应该也跟vscode的版本有关系,我安装的版本是这样的,其他版本未经测试)

问题解决

  • 方法一:
    • 打开设置 ——> 更新和安全 ——> 开发者选项,找到PowerShell
    • 勾选上“更改执行策略,以允许本地PowerShell脚本在未签名的情况下运行。”,
    • 点击应用
    • 更改成功

3.png

  • 方法二:
    • 管理员身份打开 PowerShell
    • 执行命令 set-ExecutionPolicy RemoteSigned
    • 如果提示询问是否要更改执行策略?,则选择 A 或 Y
    • 执行完毕后即可更改成功