我在使用npm时,遇见了vscode显示无法加载文件,因为此系统上禁止运行脚本......

几经搜索发现是PowerShell执行策略的问题,但我试过以管理员身份运行VS Code,甚至用管理员身份修改执行策略,问题依然存在。

最后发现,根本原因并不是执行策略没改对,而是 PowerShell 默认会优先执行 npm.ps1 脚本,而这个脚本被系统策略拦截了

如果你也遇到同样的情况,可以试试下面两种方法,都在 VS Code 里操作:

第一种方法:切换终端类型为cmd

  1. Ctrl + Shift + P

  2. 输入 Terminal: Select Default Profile

  3. 选择 Command Prompt

  4. 关闭当前 PowerShell 终端

  5. 新建一个终端

一般新建的终端名字叫cmd,如果还是叫powerShell,直接点击加号旁边的下拉箭头,点击Command Prompt(默认)。此时输入npm.cmd -v就会显示版本了,之后可以正常使用npm。

原理:这个方法的本质是“换个更省事的命令窗口”。cmd 下执行 npm 时,默认走的入口是 npm.cmd,不会触发 PowerShell 的脚本执行策略限制。

第二种方法:使用npm.cmd代替npm

先试:npm.cmd -v

能出版本号的话,之后使用npm命令只需在后面加上.cmd即可。

原理
Windows 下的 npm 其实对应多个入口文件:

  • npm.ps1(PowerShell 脚本)

  • npm.cmd(Windows 批处理)

  • npm(无后缀,由环境决定)

PowerShell 默认会优先找 npm.ps1 执行,但因为系统禁止运行脚本,所以报错。
而 npm.cmd 明确指定了走批处理入口,绕过了 PowerShell 的脚本策略,因此可以正常运行。

两种方式都不会影响项目的依赖安装、结构或运行结果,只是改变了命令的“入口方式”。
如果你也被这个问题困扰,希望这篇博客能帮你少走一点弯路。

更多推荐