当我执行npm install时,我得到这个错误

npm犯错!C:\projects*******\node_modules.react-async-script. delete

我以管理员身份运行cmd 我之前运行过npm cache clean 我确保所有其他应用程序没有打开任何与node_modules相关的东西


当前回答

我正在把Angular 13升级到14,就遇到了这个问题。 这些解决方案都不起作用,所以我只是重新启动笔记本电脑,npm I—force起作用了! 看起来好像后台有一个进程锁住了对某些node_modules文件的访问权限(你可能在某个地方运行了一个ng服务,或者由一个git bash启动,你关闭了它,但在后台一直运行)

其他回答

我正在把Angular 13升级到14,就遇到了这个问题。 这些解决方案都不起作用,所以我只是重新启动笔记本电脑,npm I—force起作用了! 看起来好像后台有一个进程锁住了对某些node_modules文件的访问权限(你可能在某个地方运行了一个ng服务,或者由一个git bash启动,你关闭了它,但在后台一直运行)

这是反病毒软件导致的典型错误。对于像我这样的情况,有一个变通办法,我不能禁用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)
}

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

NPM在scandir方面对我来说是失败的:

npm install -g webpack

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

我希望这能帮助那些正在挣扎的人。

以管理员身份运行CLI总是能帮我解决问题