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

时间:2016-09-02 13:28:57

标签: node.js windows npm

当我执行“npm install”时,我收到此错误

npm ERR! Error: EPERM: operation not permitted, rename C:\projects\******\node_modules\react-async-script' -> 'C:\projects\*******\node_modules\.react-async-script.DELETE'
  • 我以管理员身份运行cmd
  • 我在
  • 之前运行npm cache clean
  • 我确保所有其他应用程序都没有与node_modeules打开相关的任何内容

40 个答案:

答案 0 :(得分:52)

在我的情况下,它有所帮助:

  1. 使用

    清理缓存
    npm install -g npm@latest --force
    
  2. 以管理员身份全局安装最新版本的npm:

    npm cache clean --force
    
  3. 使用

    清理缓存
    {{1}}
  4. 尝试再次安装您的组件。

  5. 我希望这可以解决您的问题。如果没有帮助,请尝试暂时切换防病毒程序并重复。

答案 1 :(得分:16)

即使在磁盘上存在本地副本,尝试使用force选项进行npm安装时也能正常工作以获取远程资源。尝试运行

npm install --force

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

yarn install [package-name]

答案 2 :(得分:12)

如果您想避开--force选项(这总是更好的方法) 我建议您确保已停止运行该项目,如这通常是在我看到的几乎90%的案例中锁定文件的主要原因

我按以下顺序建议以下步骤:

1-在Angular停止ng s和React停止npm start 通常解决此问题,因为如果开发服务器正在运行项目,通常会发生此错误,因为它会锁定某些文件&amp;然后npm无法更新它们因此抛出此错误

2- 如果上述方法不起作用,请尝试关闭在其中打开工作区的代码编辑器(可能是锁定某些文件或其他内容)

所以尝试关闭代码编辑器&amp;运行:

npm install

3- 如果仍然不起作用,那么您可以尝试--force选项

npm install --force

答案 3 :(得分:9)

不是package.json,但无论出于何种原因,我的node_modules/已变为只读。重置修复此问题。

答案 4 :(得分:9)

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

答案 5 :(得分:7)

我得到了同样的东西。我没有在任何地方找到这个,但它让我觉得我们的VM往往会将文件更改为只读状态。因此,我打开了package.json的文件属性,并在“常规”标签中取消选择了Read-only

<强>步骤

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

答案 6 :(得分:5)

对我来说,我只是关闭了代码编辑器(VS Code),然后运行相同的命令。这样就为我解决了这个问题。

答案 7 :(得分:4)

我在Windows中多次遇到此问题 我通常会按顺序尝试这些。

  1. npm install --force
  2. 检查node_modules是否设置为只读和 删除如果是
  3. 删除node_modules /
  4. 检查是否有任何编辑器打开 可以访问项目的根文件夹
  5. 重启:(
  6. 通常在其中一个步骤解决后尝试npm install。

答案 8 :(得分:4)

就我而言,某些东西被锁定,快速重启解决了该问题。

答案 9 :(得分:3)

这是Antivirus引起的典型错误。像我这样的案例有一个解决方法,我无法禁用A / V(公司政策)。

您必须更改polyfills.jsNpm包:

[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)
}

答案 10 :(得分:2)

更新到npm到5.4.2之后我遇到了同样的问题,npm start为大多数npm命令提供相同的错误。一些解决方案建议使用--no-optional:

运行它

它总是不起作用。

其他建议降级,我不想降级。

我怀疑安装有问题,不确定它是什么。

所以我重新更新了我的npm:

npm i -g npm

从那时起工作正常。

答案 11 :(得分:2)

只需关闭VS Code即可为我解决问题

答案 12 :(得分:1)

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

答案 13 :(得分:1)

对于在npm: v6.9.0上运行node: v10.16.1 && Windows的情况,我必须以管理员身份运行CLI(git bash) 。然后安装软件包,没有任何警告/错误

答案 14 :(得分:1)

如果您在PHP Storm上遇到问题:

  1. 关闭终端标签
  2. 打开一个新的终端标签

答案 15 :(得分:1)

我正在VSCode中使用终端,我意识到我正在使用bash终端而不是node终端。

答案 16 :(得分:1)

我使用的是 macOS catalina,

      npm init 

我有错误

       operation not permitted, uv_cwd

在 2021 年,您可以通过这种方式解决此问题。

很简单:

步骤 1:转到父文件夹

         cd ../
         

第 2 步:再次转到您的项目文件夹,

         cd  your-project-folder

就是这样。它有效。

答案 17 :(得分:1)

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

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

我希望这会有所帮助。

答案 18 :(得分:1)

我有同样的问题。错误的原因是文件路径中不支持的字符。代替了西里尔的西里尔字母-它有所帮助。

答案 19 :(得分:1)

scandir

,npm失败了
npm install -g webpack

...这可能是由于npm试图“修改”可能被其他进程(如{0}}和其他一些github线程所锁定的文件所造成的。在强制清理缓存,验证缓存,以管理员身份运行,禁用AV等之后,实际为我工作的解决方案是关闭任何可能锁定文件的东西(即重新启动计算机) 。

我希望这可以帮助有人挣扎。

答案 20 :(得分:0)

我正在使用 iTerm。重新启动 iTerm 后,错误消失了。

答案 21 :(得分:0)

就我而言,我只是使用 cmd 以管理员身份运行 npm install

答案 22 :(得分:0)

node_modules文件夹很可能变成了Read Only。您可以尝试更新文件夹权限,但是如果您没有管理员访问权限,则npm install --force将起作用。

答案 23 :(得分:0)

以管理员身份运行CLI始终为我解决问题

答案 24 :(得分:0)

我遇到了同样的问题,在 npm cache clearcmd 中使用了 open as Adminitrator 命令。关闭 VScode 并重新打开它。它奏效了。

答案 25 :(得分:0)

这些步骤为我解决了

转到文件资源管理器中的package.json文件 右键单击并选择属性。 取消选择只读。 点击应用

注意:(如果已取消选中它,则选中并取消选中只读一次,然后单击“应用”)

答案 26 :(得分:0)

经过大量尝试,我通过以下步骤解决了这个问题:

 0. Run `cmd` or `powershell` as admin
  1. 清理缓存npm clean cache --force
  2. 删除%AppData%/ npm-cache /
  3. 的内部
  4. 删除%temp%
  5. 删除引起错误的npm模块。对我来说是iconv。因此已删除iconviconv-lite
  6. 当我再次构建时,我在app-builder中发现失败原因是病毒。我在节点模块上运行Windows Defender,并删除了该病毒。然后,再次构建。
  7. 这次我成功了。

答案 27 :(得分:0)

我关闭了VS,删除了node_modules文件夹。

然后跑了:

npm i -D -E clean-webpack-plugin@3.0.0 css- 
loader@3.4.2 html-webpack-plugin@3.2.0 mini-css- 
extract-plugin@0.9.0 ts-loader@6.2.1 typescript@3.7.5 
webpack@4.41.5 webpack-cli@3.3.10 

然后必须将其属性更改为在运行完后不只读取node_modules文件夹。

然后跑了:

npm i @microsoft/signalr @types/node

然后在VS中打开备份项目,package.json与依赖项看起来正确。

与其他人一样,谈论对node_modules文件夹的只读操作以及关闭VS以运行npm install over。

答案 28 :(得分:0)

关闭PHPStorm为我解决了这个问题。

答案 29 :(得分:0)

就我而言,在Visual Studio代码中将typescript.disableAutomaticTypeAcquisition设置为true似乎很有帮助。

答案 30 :(得分:0)

这可能是由于您的防病毒软件所致。如果无法禁用AV,则可以尝试修改NPM全局安装位置,因为节点将安装到由AV Engines主动监视的APPDATA目录中。尝试运行以下命令-

npm配置设置前缀“您的自定义位置” npm配置设置缓存“您的自定义位置”

删除node_modules目录,然后重新安装软件包。

答案 31 :(得分:0)

我也为此苦苦挣扎。 我最终确定了一个使用nvm可以正常工作的解决方案:

cd ~/.nvm/versions/node/{your node version}/lib/ npm install npm

就是这样。

答案 32 :(得分:0)

我使用元数据标志重新安装了窗口磁盘,并立即提供了帮助:https://devblogs.microsoft.com/commandline/chmod-chown-wsl-improvements/

此后,不再需要对npm命令使用sudo,因为元数据可以检查Windows和Linux文件/目录的权限。

答案 33 :(得分:0)

以超级管理员身份运行命令对我有用。关闭正在使用的编辑器后重试。

答案 34 :(得分:0)

正如Martin Kearn在评论中指出的那样,关闭Visual Studio 为我解决了这些npm权限问题。显然,VS有时会将文件锁定在100 * log n中。

答案 35 :(得分:0)

我在Windows 10中遇到了同样的问题。 只需执行以下步骤:

  • 以管理员身份打开cmd。

  • 安装更新的npm软件包。

  • npm i -g npm

  • npm init-是

答案 36 :(得分:0)

只需从npm全局软件包的路径中删除软件包文件夹。然后重新安装该软件包。 请注意,这些软件包是全局安装在: C:\ Users \您的名称\ AppData \ Roaming \ npm \ node_modules

答案 37 :(得分:0)

我做了以下事情:

  1. 将npm升级到最新版本:npm install -g npm@6.5.0-next.0
  2. 从以下位置删除了npm-cache文件夹:c:/users/[username]/AppData/Roaming/npm-cache
  3. 是否清除了缓存:npm cache clean --force
  4. 运行npm install

答案 38 :(得分:0)

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

答案 39 :(得分:-1)

我多次遇到此问题。 事实证明,这与权限,缓存等无关。错误消息具有误导性。 对于节点v 6.x,您将看到更详细的错误堆栈,但不会在7.x之后看到 对于我和我的大学来说,问题在于超时功能。基本上,当npm尝试删除软件包时,软件包安装尚未完成(即保留目录)。在节点6.x中,您现在可以在finalize.js中看到它消失了! 只需使用纱线即可。

相关问题