当前位置: 首页 > news >正文

npm 报错:“无法加载文件 ...npm.ps1,因为在此系统上禁止运行脚本” 解决方案(附执行策略说明)

在使用 npm 命令时,部分 Windows 用户可能会遇到如下错误:

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

这个错误提示表明 PowerShell 的执行策略阻止了脚本的运行,而 npm.ps1 是一个 PowerShell 脚本文件,因此被拦截了。


一、问题原因

Windows PowerShell 默认的安全策略是 Restricted,即默认情况下不允许运行脚本,以防止恶意脚本的执行。npm 命令本身是一个 PowerShell 脚本文件(.ps1),因此当你尝试运行 npm 命令时就会报错。


二、解决方法

方法 1:临时修改 PowerShell 执行策略

你可以通过以下命令查看当前的执行策略:

Get-ExecutionPolicy

如果你看到输出为 Restricted,则表示脚本执行被限制。

修改执行策略为 RemoteSigned(推荐)
Set-ExecutionPolicy RemoteSigned

⚠️ 需要管理员权限运行 PowerShell 才能更改执行策略。

  • RemoteSigned 策略含义:
    • 本地脚本可以无限制运行;
    • 从网络下载的脚本必须经过签名才能运行。

输入命令后会提示你确认是否更改策略,输入 Y 确认即可。

其他可选策略(按需选择):
策略名称描述
Restricted默认设置,阻止运行脚本
RemoteSigned推荐,允许本地脚本,远程脚本需签名
AllSigned所有脚本必须签名
Unrestricted允许所有脚本,但对远程脚本进行警告
Bypass不阻止任何脚本,不提示输出

例如,如果你想完全放开限制,可以使用:

Set-ExecutionPolicy Bypass

⚠️ 注意安全风险:Bypass 模式适合临时调试使用,不建议长期开启。


方法 2:使用 CMD 或 PowerShell 的“绕过模式”启动

如果你不想永久更改执行策略,可以在启动 PowerShell 时加上 -ExecutionPolicy Bypass 参数:

powershell -ExecutionPolicy Bypass

这样进入的 PowerShell 会话将不会限制脚本运行,退出后恢复原状。


三、验证是否修复成功

在修改策略后,再次运行:

npm -v

如果正常显示 npm 版本号,则说明问题已解决。


四、补充说明

  • 如果你是通过 nvm-windows 安装 Node.js 和 npm 的,通常会在安装目录下生成 npm.ps1 文件,如:D:\nvm4w\nodejs\npm.ps1
  • 此类问题只出现在 PowerShell 环境中,若你改用 CMD 或 Git Bash 则不会有此限制。

五、常见问题解答

Q1:我运行 Set-ExecutionPolicy 提示权限不足怎么办?

A:请右键点击 PowerShell 图标,选择 “以管理员身份运行” 后再执行命令。

Q2:我公司电脑没有管理员权限怎么办?

A:请联系 IT 管理员协助修改执行策略;或者使用命令行参数方式运行 PowerShell:

powershell -ExecutionPolicy Bypass -File yourscript.ps1

Q3:为什么 npm.cmd 可以运行,但 npm 不行?

A:这是因为在 PowerShell 中直接输入 npm 会优先匹配 npm.ps1 脚本文件,而 npm.cmd 是 CMD 的批处理文件,在 PowerShell 中不会自动识别,除非你显式调用。


六、参考资料

  • Microsoft 官方文档:about_Execution_Policies
  • Node.js 官网
  • nvm-windows GitHub 项目页

结语

这个问题本质上是 PowerShell 的安全机制导致的,并不是 npm 本身的错误。了解并合理配置执行策略,可以帮助我们更好地使用各种基于脚本的开发工具。希望本文对你有所帮助!

如你有其他疑问或更好的解决方案,欢迎留言交流!


http://www.lryc.cn/news/575068.html

相关文章:

  • SpringBoot使用admin+actuator实现日志可视化
  • 曼昆《经济学原理》第九版 宏观经济学 第三十二章宏观经济政策的六个争论
  • Spring 容器核心扩展实战:Spring Boot中三大扩展问题解析
  • 亚远景-ASPICE与ISO 26262:汽车安全与软件质量的协同
  • JVM 中的 GC 算法演进之路!(Serial、CMS、G1 到 ZGC)
  • 7.Spring框架
  • 【机器人编程基础】Python模块的定义和导入
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • Spring学习笔记【8】
  • 【嘉立创EDA】PCB 如何按板框轮廓进行铺铜
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • Redis大规模Key遍历实战:性能与安全的最佳实践
  • 前端中的 CI/CD 教程详解(附实践方案)
  • 初学python的我开始Leetcode题10-3
  • Node.js-fs模块
  • 【Linux】Shell 脚本编程——条件测试与比较
  • python的易家宜超市云购物系统
  • 无人机灯光驱动模块技术解析
  • 京东正式开源 Taro on HarmonyOS C-API 版本,为鸿蒙应用跨端开发提供高性能框架
  • Xcode缓存清除
  • 【CUDA调优指南】缓存访存流程
  • Jenkins CLI 使用方法介绍
  • Jenkins JNLP与SSH节点连接方式对比及连接断开问题解决方案
  • 力扣2040两个有序数组的第K小乘积
  • Docker、Docker composer与Docker desktop
  • 英文摘要给成中文摘要模型
  • 探索解析C++ STL中的 list:双向链表的高效实现与迭代器
  • NCCN Guidelines Navigator:数智化工具引领肿瘤精准治疗新纪元
  • 八股文——JAVA基础:说一下C++与java的区别
  • 企业内部安全组网技术解析:安全通道选型、零信任架构与数据合规加密防护