解决 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
相关推荐
崔庆才丨静觅10 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby606111 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了11 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅11 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅11 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅12 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment12 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅12 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊12 小时前
jwt介绍
前端
爱敲代码的小鱼12 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax