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

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

npm 错误!错误:EPERM:不允许操作,重命名 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 命令提示符。一旦我改变了它,它就可以工作了。

标签: node.js windows npm


【解决方案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】:

          我做了以下事情:

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

                    步骤

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

                    【讨论】:

                    • 只读对我来说,虽然最初的问题是我通常只使用代码来安装。在这种情况下,我在 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。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-09-10
                    • 1970-01-01
                    • 2018-07-12
                    • 2018-05-26
                    • 2019-11-04
                    • 1970-01-01
                    相关资源
                    最近更新 更多