You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

设置npm prefix后执行命令遇EPERM及TypeError,求解决方案

嘿,这个问题我之前帮朋友处理过,来给你理清楚前因后果和修复步骤:

问题原因分析

你执行的npm config set prefix /usr/local是**类Unix系统(Linux/macOS)**的配置逻辑,但你当前是在Windows环境下操作——从报错里的C:\Program Files\Git\usr\local路径就能看出来,npm把这个Unix风格的路径解析到了Git for Windows的模拟目录里,而这个系统目录你没有写入权限,所以触发了EPERM权限错误;后面的Cannot read property 'get' of undefined是权限错误引发的连锁异常,核心问题还是prefix配置错了路径+权限不足。

修复方案

下面两种方法都能解决问题,选你顺手的来:

方法一:通过命令重置prefix配置

打开CMD或者PowerShell,依次执行这两条命令:

npm config delete prefix
npm config set prefix %AppData%\npm

第一条命令会删掉你之前设置的错误prefix,第二条会把prefix重置为Windows下npm的默认用户目录(这个目录属于你的个人用户,不会有权限问题)。

方法二:手动修改npm配置文件

如果执行命令还是报错,直接改配置文件更稳妥:

  • 打开文件管理器,在地址栏输入%USERPROFILE%回车,找到.npmrc文件(如果看不到,要开启“显示隐藏文件”选项)
  • 用记事本打开这个文件,找到写着prefix=/usr/local的行,把它改成prefix=${APPDATA}\npm,保存文件
  • 重启你的终端,再运行npm命令就正常了

另外提醒下:以后在Windows下自定义npm全局包路径时,一定要用Windows风格的路径(比如D:\npm-global),别再用Unix风格的路径啦。

内容的提问来源于stack exchange,提问作者Leon Bogod

火山引擎 最新活动