以下是解决运行 npm run dev
命令,因PowerShell脚本执行权限受阻的解决方案:
报错信息:
PS D:\project> npm run dev npm :因为这个系统上已停用指令码执行,所以无法载入C:\Program Files\nodejs\npm.ps1 档案。如需详细资讯,请参阅 about_Execution_Policies,网址为 https:/go.microsoft.com/fwlink/?LinkID=135170。 位于 线路:1 字元:1
- npm run dev
- ~~~
- CategoryInfo : SecurityError: (😃 [], PSSecurityException
- FullyQualifiedErrorId : UnauthorizedAccess
一、问题原因
错误提示 「因为这个系统上已停用指令码执行,所以无法载入 npm.ps1 档案」,表明当前系统禁止执行PowerShell脚本,具体原因包括:
- PowerShell默认执行策略限制:Windows系统默认禁止运行未签名的脚本(如npm.ps1)。
- 权限不足:未以管理员身份运行终端,导致无法修改执行策略。
- 安全软件拦截:部分杀毒软件或组策略强制禁用了脚本执行。
二、解决方案
1. 修改PowerShell执行策略(推荐)
- 步骤:
- 以管理员身份打开PowerShell:右键点击PowerShell图标 → 选择 「以管理员身份运行」。
- 查看当前策略:
若返回Get-ExecutionPolicy
Restricted
表示完全禁止脚本执行。 - 修改策略为允许:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
RemoteSigned
:允许运行本地脚本,远程脚本需签名。-Scope CurrentUser
:仅对当前用户生效,避免全局风险。
- 验证修改:
再次运行Get-ExecutionPolicy
,确认返回RemoteSigned
。 - 重启终端:关闭并重新打开 PowerShell 或 VSCode IDE终端。
2. 通过命令行参数临时绕过限制
- 若需临时运行脚本,可在命令前添加
bypass
参数:powershell -ExecutionPolicy Bypass -Command "npm run dev"
3. 使用其他终端工具
- 若不想修改系统策略,可改用以下工具:
- CMD:Windows原生命令行工具,默认允许运行npm命令。
- Git Bash:基于MinGW的终端,不受PowerShell策略限制。
4. 检查Node.js安装权限
- 重新安装Node.js:
- 卸载现有Node.js。
- 下载最新安装包,右键选择 「以管理员身份运行」 完成安装。
- 安装时勾选 「Automatically install necessary tools」 确保环境配置正确。
5. 验证脚本安全性
- 若错误仍存在,需检查脚本是否被篡改:
确认文件内容为Node.js官方代码,无异常命令。Get-Content C:\Program Files\nodejs\npm.ps1
三、补充建议
- 避免过度放宽权限:
- 勿使用
Unrestricted
策略,否则可能执行恶意脚本。
- 勿使用
- 定期更新Node.js:
旧版本可能存在兼容性问题,建议通过 Node.js官网 更新至LTS版本。 - 项目依赖检查:
若问题与脚本权限无关,还需排查package.json
中dev
脚本定义、依赖安装完整性等。
通过以上步骤,可解决因PowerShell策略导致的脚本执行问题。若需进一步调试,可提供完整的终端日志或项目配置。