npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1

问题描述

使用git bash, cmd运行npm都可以,但是用Power Shell运行npm,却报错:

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1

  • npm
  • ~~~
  • CategoryInfo : SecurityError: (:) [],PSSecurityException
  • FullyQualifiedErrorId : UnauthorizedAccess

原因分析

该问题通常发生在安装nvm之后,环境变量发生变化,npm.cmd执行方式也发生变化。而Power Shell默认执行策略比较严格,是Restricted,阻止了nvm相关脚本的执行。

解决方案

两种方案,推荐第二种。

方案一,把npm.cmd的运行路径加入到环境变量path中。例如:

"C:\Users\zxcv\AppData\Roaming\nvm\v22.14.0\node_modules\npm\bin\"

这会导致一个问题是,后面用nvm use xxx切换了node版本后,运行npm可能会有问题。

方案二,修改Powser Shell的执行策略。

  1. 右键开始菜单,选择"终端管理员",打开PS窗口。

  2. 查看当前执行策略:

bash 复制代码
Get-ExecutionPolicy

默认显示Restricted.

  1. 修改策略
bash 复制代码
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. 验证修改结果:
bash 复制代码
Get-ExecutionPolicy

应显示为:RemoteSigned。

含义为:允许运行本地脚本,远程脚本需签名(平衡安全与便利)。

  1. 重启vs code的power shell终端,再运行npm就正常了。
相关推荐
Qrun1 天前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp1 天前
全局 npm config 与多环境配置
前端·npm·node.js
中国lanwp1 天前
npm中@your-company:registry 和 registry 的区别
前端·npm·node.js
Hilaku4 天前
就因为package.json里少了个^号,我们公司赔了客户十万块
前端·javascript·npm
金梦人生5 天前
让 CLI 更友好:在 npm 包里同时支持“命令行传参”与“交互式对话传参”
前端·npm
ByteCraze5 天前
一文讲透 npm 包版本管理规范
前端·arcgis·npm
Dontla6 天前
npm install命令介绍
前端·npm·node.js
Airser6 天前
npm启动Taro框架报错
前端·npm·taro
xiecoding.cn6 天前
NPM下载和安装图文教程(附安装包)
npm·node.js·npm install·npm安装·npm是什么·安装npm·npm下载
龙仔CLL6 天前
微前端乾坤vue3项目使用tinymce,通过npm,yarn,pnpm包安装成功,但是引用报错无法使用
javascript·arcgis·npm