报错“因为这个系统上已停用指令码执行,所以无法载入C:\Program Files\nodejs\npm.ps1 档案“,因PowerShell脚本执行权限受阻的解决方案

以下是解决运行 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脚本,具体原因包括:

  1. PowerShell默认执行策略限制:Windows系统默认禁止运行未签名的脚本(如npm.ps1)。
  2. 权限不足:未以管理员身份运行终端,导致无法修改执行策略。
  3. 安全软件拦截:部分杀毒软件或组策略强制禁用了脚本执行。

二、解决方案

1. 修改PowerShell执行策略(推荐)
  • 步骤
    1. 以管理员身份打开PowerShell:右键点击PowerShell图标 → 选择 「以管理员身份运行」
    2. 查看当前策略
      Get-ExecutionPolicy
      
      若返回 Restricted 表示完全禁止脚本执行。
    3. 修改策略为允许
      Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
      
      • RemoteSigned:允许运行本地脚本,远程脚本需签名。
      • -Scope CurrentUser:仅对当前用户生效,避免全局风险。
    4. 验证修改
      再次运行 Get-ExecutionPolicy,确认返回 RemoteSigned
    5. 重启终端:关闭并重新打开 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
    1. 卸载现有Node.js。
    2. 下载最新安装包,右键选择 「以管理员身份运行」 完成安装。
    3. 安装时勾选 「Automatically install necessary tools」 确保环境配置正确。
5. 验证脚本安全性
  • 若错误仍存在,需检查脚本是否被篡改:
    Get-Content C:\Program Files\nodejs\npm.ps1
    
    确认文件内容为Node.js官方代码,无异常命令。

三、补充建议

  1. 避免过度放宽权限
    • 勿使用 Unrestricted 策略,否则可能执行恶意脚本。
  2. 定期更新Node.js
    旧版本可能存在兼容性问题,建议通过 Node.js官网 更新至LTS版本。
  3. 项目依赖检查
    若问题与脚本权限无关,还需排查 package.jsondev 脚本定义、依赖安装完整性等。

通过以上步骤,可解决因PowerShell策略导致的脚本执行问题。若需进一步调试,可提供完整的终端日志或项目配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值