npm 错误!错误:EPERM:不允许操作,重命名

Posted

技术标签:

【中文标题】npm 错误!错误:EPERM:不允许操作,重命名【英文标题】:npm ERR! Error: EPERM: operation not permitted, rename 【发布时间】:2017-01-10 15:25:51 【问题描述】:

当我执行npm install 时出现此错误

C:\projects******\node_modules\react-async-script' -> 'C:\projects*******\node_modules.react-async-script .删除'

我以管理员身份运行 cmd 我之前跑过npm cache clean 我确保所有其他应用程序都没有与node_modules open 相关的任何内容

【问题讨论】:

以管理员身份运行 cmd 为我工作 在我的情况下,我必须以普通用户(不是管理员)的身份运行它并且它有效,它似乎是用户权限冲突。但似乎这里给出的所有其他解决方案 npm clean, npm install 都不是必需的。它是一个用户权限问题。如果更多人可以确认,我可以发布一个新的答案。 就我而言,我没有使用 Node.js 命令提示符。一旦我改变了它,它就可以工作了。 【参考方案1】:

我在 Windows 10 中遇到了同样的问题。 只需按照以下步骤操作:

以管理员身份打开cmd。

安装更新的 npm 包。

npm i -g npm

npm init --yes

【讨论】:

【参考方案2】:

尝试将文件重命名为另一个已存在的文件名可能会在 Windows 上导致 EPERM 错误。

【讨论】:

天哪。这就是问题所在。 有什么解决办法吗? @Zaid 避免将文件重命名为已经存在的文件名。例如,您可以先检查fs.stat。此外,在竞争条件下添加错误捕获。 @ZachBloomquist 谢谢,伙计!我会尝试你的解决方案。我只是想用一个不存在的名称重命名一个文件夹。【参考方案3】:

在我的情况下,有些东西被锁定了,快速重启解决了它。

【讨论】:

【参考方案4】:

只需从 npm 全局包的路径中删除包文件夹即可。然后重新安装软件包。 请注意,软件包全局安装在: C:\Users\your-name\AppData\Roaming\npm\node_modules

【讨论】:

【参考方案5】:

以管理员身份打开命令提示符并导航到项目位置,然后运行 ​​npm install。它对我有用。

【讨论】:

【参考方案6】:

我做了以下事情:

    已将 npm 升级到最新版本:npm install -g npm@6.5.0-next.0c:/users/[username]/AppData/Roaming/npm-cache 中删除了 npm-cache 文件夹 缓存清理了吗:npm cache clean --force 运行npm install

【讨论】:

【参考方案7】:

对于某些人来说,AppRoot\npm 文件夹可能是个问题。有时 AppRoot 文件夹被标记为网络共享,因此 Antivirus 会阻止这些内容。按照下面的链接获取完整的解决方案。

https://alastaircrabtree.com/fixing-intermittant-eperm-operation-not-permitted-on-npm-install/

我希望这会有所帮助。

【讨论】:

【参考方案8】:

我遇到了同样的问题。错误的原因是文件路径中的字符不受支持。用英语替换了西里尔字母 - 它有帮助。

【讨论】:

【参考方案9】:

这是由防病毒软件引起的典型错误。对于像我这样无法禁用 A/V(公司政策)的情况,有一种解决方法。

您必须更改 Npm 包内的 polyfills.js

[NODE_HOME]/node_modules/npm/node_modules/graceful_fs/polyfills.js

查找以下语句:

if (process.platform === "win32") 

在此语句中,有一个超时,在发生错误时重试。问题是在某些情况下,超时后,文件仍然被 A/V 锁定。解决方案是取消超时并让此语句循环。与之前代码的改动注释:

if (platform === "win32") 

fs.rename = (function (fs$rename)  return function (from, to, cb) 
  var start = Date.now()
  var backoff = 0;
  fs$rename(from, to, function CB (er) 
    if (er
        && (er.code === "EACCES" || er.code === "EPERM")
        /*&& Date.now() - start < 60000*/) 
            console.log("Retrying rename file: " + from + " <> " + to)
            fs$rename(from, to, CB);
      /*setTimeout(function() 
        fs.stat(to, function (stater, st) 
          if (stater && stater.code === "ENOENT")
            fs$rename(from, to, CB);
          else
            cb(er)
        )
      , backoff)*/
      if (backoff < 100)
        backoff += 10;
      return;
    
    if (cb) cb(er)
  )
)(fs.rename)

【讨论】:

你先生是真正的MVP。 我遇到了类似的错误,禁用防病毒软件有所帮助。非常感谢。【参考方案10】:

我的回答是先做npm cache clean --force。然后运行npm install -g npm@5.3.0 安装npm 5.3.0 版本。对我来说,这个 npm 版本没有问题。

【讨论】:

【参考方案11】:

npm 在scandir 对我来说失败了:

npm install -g webpack

...这可能是由于 npm 试图“修改”可能被其他进程锁定的文件,如提到的 here 和其他几个 github 线程。在强制清理缓存、验证缓存、以管理员身份运行、禁用 AV 等之后,真正对我有用的解决方案是关闭任何可能锁定文件的东西(即重新启动我的计算机) .

我希望这可以帮助正在苦苦挣扎的人。

【讨论】:

【参考方案12】:

当我尝试使用带有强制选项的 npm install 来获取远程资源时,即使磁盘上存在本地副本,它也能正常工作。尝试运行

npm install --force

更新 对于我的一些同事来说,这个解决方案不起作用。但我们尝试使用yarn 而不是 npm。它一直工作(也更快)没有任何问题

yarn install [package-name]

【讨论】:

其他人建议关闭杀毒软件。对我来说,在我所在的网络上,这不是一个选择。 --force 标志为我解决了这个问题 我只用yarn解决了我的问题,所以我建议给他一个机会。【参考方案13】:

不是package.json,但出于某种原因,我的node_modules/ 已变为只读。重置解决了这个问题。

【讨论】:

“重置”对我来说意味着1.关闭VS,2.从FileExplorer删除node_modules3.重新启动我的电脑4.运行npm install --force。然后终于成功了。 node_modules 文件夹>>属性>>取消选中只读对我有用。它发生在将文件夹复制到新位置后。希望这对某人有所帮助。【参考方案14】:

我得到了同样的东西。我在任何地方都没有找到这个,但它让我震惊的是,我们的虚拟机倾向于将文件更改为只读状态。于是我打开package.json的文件属性,在“常规”选项卡中取消选择Read-only

步骤

    转到package.json 文件。 右键单击并选择属性。 在常规选项卡的属性部分,取消选择只读。 点击应用以应用更改。

【讨论】:

只读对我来说,虽然最初的问题是我通常只使用代码来安装。在这种情况下,我在 Visual Studio 中打开了一个新的应用程序实例,这样我就可以从旧版本中移植一些更改,并且 VS 立即开始自行安装。然后我像往常一样打开代码来运行 npm install ,这两个应用程序都陷入了困境。在几次失败后,我从我们应用程序的工作根版本中大量删除了一个节点模块,以允许我向后移植更改。这个文件夹是只读的,所以继续阻止事情。【参考方案15】:

我遇到了同样的错误,根据https://github.com/Medium/phantomjs/issues/19,这可能是由您的防病毒软件引起的。我在安装期间禁用了我的,并以管理员身份在 cmd 上执行了“npm install”,它工作正常。 希望这会有所帮助。

【讨论】:

根据github.com/npm/npm/issues/12059,此问题已得到修复。没有关于它将进入什么版本的消息。对于每个 cmets,禁用 AV 并不总是有效。 就我而言,我必须在安装过程中关闭 SourceTree。

以上是关于npm 错误!错误:EPERM:不允许操作,重命名的主要内容,如果未能解决你的问题,请参考以下文章

npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048

VS 代码 - 错误:EPERM:不允许操作

Bower 安装错误 EPERM 重命名 sb-admin 主题

EPERM,不允许操作错误,配置存储

npm - EPERM:Linux 上不允许操作

呃!错误:EPERM:不允许操作