npm - EPERM:Windows上无法执行操作

212

我跑了

npm config set prefix /usr/local

运行该命令后,当我尝试在Windows操作系统上运行任何npm命令时,始终会收到以下提示。

Error: EPERM: operation not permitted, mkdir 'C:\Program Files (x86)\Git\local'
at Error (native)

已从所有文件中删除

C:\Users\<your username>\.config\configstore\

它没有起作用。

有什么建议吗?


64
运行 npm cache clean --force 解决了我的问题。 - Nuhman
4
运行两次 npm cache clean --force 对我有效。 - VIshal Jain
2
你是在 cmd.exe 的“终端”(命令提示符)中运行它还是从 GitBash 终端中运行的?对我来说,当我在 GitBash 中运行它时失败了,但是当我在 cmd 中运行它时正常工作。 - Henke
1
今天我甚至在 cmd.exe 中遇到了 EPERM 错误。但是我在 C:\Program Files\nodejs 目录下运行了以下命令,似乎它起作用了:npm cache clean --force && npm install <package-name> --force --global。我还将 C:\Program Files\nodejs\node_modules 添加到了系统的 PATH 环境变量中。 - Henke
1
屏幕截图:https://i.imgur.com/VLFS7lG.png。但最好先尝试 https://dev59.com/RV0Z5IYBdhLWcg3w-ETS#44014485。 - Henke
显示剩余4条评论
49个回答

180

运行这个命令是我的错误。

npm config set prefix /usr/local

路径/usr/local不适用于Windows。这个命令改变了'C:\Program Files (x86)\Git\local'下的前缀变量。

要访问并更改此目录,我需要以管理员身份运行我的cmd。

所以我做了以下几步:

  1. 以管理员身份运行cmd
  2. 运行npm config edit(您将获得记事本编辑器)
  3. prefix变量更改为C:\Users\<User Name>\AppData\Roaming\npm

然后npm start在普通控制台中就可以正常工作了。


在我的情况下,我只是在 npm config edit 之后取消注释了 prefix(原本是 ;prefix...),然后就成功了。不确定这是否是明智的做法,但它起作用了。 - ruffin
在我的情况下,我在笔记本电脑上没有管理员权限,所以我是这样做的 - https://dev59.com/WlsW5IYBdhLWcg3wwZnG#57249779 - Rishabh Jain
2
仅以管理员身份重新运行即可解决我的问题。 - Unbreakable
非常感谢!在经过大量搜索找出问题的原因后,您的解决方案对我很有帮助。 - Jimit Vaghela

81

这是因为Windows没有给用户在系统驱动器内创建文件夹的权限。要解决这个问题:

右键点击该文件夹 > 属性 > 安全选项卡

点击编辑以更改权限 > 选择用户并给予该用户完全控制


2
为了帮助 OP 解决当前的问题,可以在回答中添加一些解释说明。 - ρяσѕρєя K
2
将用户访问更改系统文件夹的权限并不是一个好主意,特别是当这可以通过将前缀更改为用户主目录中的文件夹来轻松解决时。 - atomic77
2
这在你不是系统管理员的公司笔记本电脑上是行不通的。 - schlingel
在构建服务器上的等效操作是 attrib -R "C:\...\wwwroot\*.*" /S /D(TFS 在检出时会将所有内容设置为只读)。 - Louis Somers
运行得非常顺利! - JuBaer AD
显示剩余4条评论

56

有时候,在安装/更新软件包之前停止开发服务器就足够了。


1
多么奇怪但又真实...安装react-dom@16.7.0-alpha.0来尝试React Hooks并不起作用,直到尝试了这个。 - Dimitar Nikovski
此外,如果您怀疑这个问题是由于开发服务器在运行但不知道如何停止它,只需注销/重新启动Windows即可解决这个问题。 - Ng Sek Long
这很奇怪,有人能解释一下为什么会发生这种情况吗? - Syed M. Sannan

44

我通过更改项目文件夹的Windows用户访问权限来解决了这个问题:

以下是截图: http://prntscr.com/djdn0g

输入图像描述


这个答案是重复的 https://dev59.com/WlsW5IYBdhLWcg3wwZnG#37915233。 - canbax

40

重新启动 VsCode 解决了我的问题!


1
非常感谢,这对我有用。如果有其他人正在阅读此内容,可以尝试清除并重新启动您的 VSCode 终端,以防它缓存先前的命令。 - Robo Mop
1
我相当不高兴,因为我花了30分钟在这上面。 - Joe Sadoski
VS Code 似乎将其钩子放入了一些不允许“npm i”正常工作的东西中。 - xinthose

27

当我升级到新版本时,最近遇到了同样的问题,唯一的解决方案是降级。

卸载:

npm uninstall npm -g

安装先前版本:

npm install npm@5.3 -g

请稍后尝试更新版本。


没错,我正在关注这个话题,以了解何时会修复该问题。 - Leonardo Oliveira

21

我使用的是Windows 10操作系统。 我以管理员身份运行命令提示符,这样问题就解决了。

找到命令提示符,右键点击,并选择以管理员身份打开。


@EtienneGautier 那完全不是真的。你有什么修改系统文件的解决方案吗?如果除了“管理员权限”之外还有其他方法,那么操作系统的安全性就存在严重问题。 - Clonkex
嘿@Clonkex,我假设上下文是NPM的(根据问题)。尽管如此,我的评论并不相关,我将其删除。感谢您的反馈。 - Etienne Gautier
@EtienneGautier 哦,好的。 - Clonkex

20

我使用一个过时的版本npm。 我运行了一系列命令来解决这个问题:

npm cache clean --force

然后:

npm install -g npm@latest --force

然后(再次):

npm cache clean --force

最后我终于能够成功运行安装Angular项目,没有再看到EPERM相关错误信息:

ng new myProject

从npm@5开始,建议您使用npm cache verify即自我修复机制;它将确保一切一致。 - ben
谢谢兄弟,这对我有用。我正在尝试创建一个React应用程序。 - Rahul Sarma

15

在我的情况下,我遇到了这个错误,是因为我在运行 npm install 的时候,我的文件夹及其文件已经在我的编辑器(VS code)中打开。通过关闭我的编辑器并通过命令行运行 npm install ,我解决了这个问题。


13

当我尝试安装npm包AVA时,我遇到了同样的问题。对我来说解决方案是删除node_modules文件夹并强制清除npm缓存:

rm -rf node_modules
npm cache clean --force

我随后便能够毫无问题地安装npm包。


是的,我在当前工作目录中有一些node_modules文件夹。当我尝试运行angular cli命令“ng new…”时,它会抛出异常。删除node_modules文件夹有所帮助。 - Ashokan Sivapragasam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接