解决 pnpm dev 报错:系统禁止运行脚本的问题

概述

在使用 pnpm dev 命令启动项目时,很多开发者会遇到 PowerShell 拦截脚本运行的报错,本文将详细解析问题原因,并提供多种可行的解决方法。

一、问题现象

执行 pnpm dev 命令后,终端抛出如下错误:

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

二、问题原因

该错误的核心是 Windows PowerShell 的执行策略限制 。PowerShell 为了系统安全,默认会限制脚本的运行权限,防止恶意脚本执行。而 pnpm 的启动依赖 .ps1 脚本文件,当执行策略为严格模式时,脚本就会被直接拦截。

三、解决方法

方法 1:临时解除当前会话限制(推荐,仅本次生效)

此方法仅对当前打开的 PowerShell 窗口生效,关闭窗口后权限自动恢复,兼顾安全性和便捷性。

1、以普通用户身份打开 PowerShell(无需管理员权限)。

2、执行以下命令,将当前用户的执行策略设置为 RemoteSigned

复制代码
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

3、终端弹出确认提示时,输入 Y 并按下回车键。

4、重新执行 pnpm dev 命令,即可正常启动项目。

方法 2:永久解除限制(需管理员权限)

如果需要长期使用 pnpm,不想每次都配置权限,可以选择此方法,全局解除本地机器的脚本运行限制。

1、右键点击 PowerShell,选择以管理员身份运行

2、执行以下命令,设置本地机器的执行策略:

复制代码
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

3、输入 Y 确认策略修改。

4、关闭当前 PowerShell 窗口,重新打开后执行 pnpm dev 即可。

方法 3:绕过 PowerShell,使用 CMD 终端

如果不想修改 PowerShell 执行策略,也可以换用 Windows 自带的 CMD 命令提示符,CMD 不受 PowerShell 执行策略的约束。

  1. 按下 Win + R,输入 cmd 并回车,打开命令提示符。
  2. 在 CMD 中切换到项目根目录,直接执行 pnpm dev 命令即可。

四、补充说明

1、关于 RemoteSigned 策略 该策略是兼顾安全与实用的选择,它允许运行本地创建 的脚本(如 pnpm 的 .ps1 文件),但要求远程下载的脚本必须带有数字签名,能有效防范恶意脚本。

2、检查 pnpm 是否安装成功若修改执行策略后仍报错,可能是 pnpm 未正确安装,可执行以下命令重新全局安装:

复制代码
npm install -g pnpm

**3、恢复默认严格策略(可选)**如果后续担心安全风险,想要恢复 PowerShell 的默认限制,可执行以下命令:

复制代码
Set-ExecutionPolicy Restricted -Scope CurrentUser
相关推荐
FreeBuf_20 分钟前
Windows NT OS内核提权漏洞PoC已公开
windows
学网安的肆伍32 分钟前
【046-WEB攻防篇】注入工具&SQLMAP&Tamper编写&指纹修改&高权限操作&目录架构
前端·架构
森林的尽头是阳光1 小时前
tree回显问题
javascript·vue.js·elementui
雲帝1 小时前
Windows虚拟机UDP大包分片排障
windows·网络协议·udp
Highcharts.js2 小时前
如何下载使用Highcharts Grid 开发web可编辑表格
前端·人工智能·grid 表格·web 表格·在线编辑表格·highcharts表格安装·表格开发工具
用户62960593247052 小时前
从“浏览器根本区分不了”到真正实现:刷新不退出,关闭标签页自动退出,前端判断浏览器关闭和刷新
前端
qetfw2 小时前
MWU:Vue 3 + FastAPI 的 MaaFramework 跨平台 WebUI 源码
前端·vue.js·python·fastapi·开源项目·效率工具
mfxcyh2 小时前
Vue3+Ant Design Vue 实现手动异步文件上传(含大小校验、弹窗上传)
前端·javascript·vue.js
wordbaby2 小时前
Web端热敏标签打印完整解决方案(QZ Tray + 译维A42)
前端
swipe2 小时前
03|Axios 请求进了后端之后:Controller、Request、Response 是怎么接住它的?
前端·后端·全栈