拒绝删除/编码 EEXIST

我只是运行一个简单的 npm install,我得到了这个错误。

npm ERR! path /Users/jasonazoulay/Desktop/fabrick.io/delegation/node_modules/@angular/cli/node_modules/webpack/node_modules/yargs/node_modules/os-locale/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which
npm ERR! code EEXIST
npm ERR! Refusing to delete /Users/jasonazoulay/Desktop/fabrick.io/delegation/node_modules/@angular/cli/node_modules/webpack/node_modules/yargs/node_modules/os-locale/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which: is outside /Users/jasonazoulay/Desktop/fabrick.io/delegation/node_modules/@angular/cli/node_modules/webpack/node_modules/yargs/node_modules/os-locale/node_modules/execa/node_modules/cross-spawn/node_modules/which and not a link
npm ERR! File exists: /Users/jasonazoulay/Desktop/fabrick.io/delegation/node_modules/@angular/cli/node_modules/webpack/node_modules/yargs/node_modules/os-locale/node_modules/execa/node_modules/cross-spawn/node_modules/.bin/which
npm ERR! Move it away, and try again

这是我第一次得到这个错误,我不知道该怎么办。

160821 次浏览

尝试运行 npm update -g npm,然后再次运行 npm i
如果这不起作用,也许 npm cache clean会有所帮助。

如果这不起作用,那么您应该考虑删除应用程序中的 node_modules文件夹,然后再次运行 npm i
如果你仍然没有运气,我建议删除 package-lock.jsonnode_modules文件夹,然后再运行 npm i

步骤

  1. 完全删除 node_modules目录。
  2. 再次运行 npm install

这个应该有用。

我在 Linux 上遇到了这个问题(npm 是当前最新的5.6.0) ,因为我创建了一个 tgz 归档文件,并且在创建 tgz 归档文件时需要取消引用一些符号链接(参见 man tar)(这些符号链接是复制到 VM 进行测试的)。这样,node_modules/.bin中的许多符号链接也变成了常规文件。 Npm 在错误消息中说明,例如。

拒绝删除/path/to/node _ module/. bin/jest: 在/path/to/node _ module/jest 之外,而不是一个链接

这就是我在谷歌搜索之后解决问题的方法。

  • 导航到安装节点的目录
  • 重命名 npm.cmdnpm文件
  • 再次尝试运行安装
  • 如果成功. . 删除之前重命名的 npmnpm.cmd文件
  • 如果没有,

Cli 命令在这里... 如果你不想被重命名和东西

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2
npm2 install npm@latest -g

del npm2
del npm2.cmd

Rolf-schmidiger

我也犯过类似的错误(我的不是@棱角的) ,
通过安装程序删除和重新安装节点来解决。

我遇到了同样的问题,结果发现问题在于,在我尝试安装的同时,npm的一个离散实例在后台的某个地方运行(确切地说,是 Webpack 的 npm run serve)。

停止正在运行的实例解决了问题。

我也遇到过类似的问题,所以卸载 npm 并重新安装它,确保以正确的用户身份登录进行重新安装。我想我以前是以 root 用户的身份安装 npm 的,但是以常规(sudo)用户的身份更新包。

我在处理一个虚拟的加密磁盘时遇到了这个问题。 将项目移动到常规磁盘上解决了这个问题。

  1. 从控制面板卸载 node.js
  2. 删除下面的文件夹
C:\Program Files (x86)\Nodejs
C:\Program Files\Nodejs
C:\Users\{User}\AppData\Roaming\npm (or %appdata%\npm)
C:\Users\{User}\AppData\Roaming\npm-cache (or %appdata%\npm-cache)
C:\Users\{User}\.npmrc (and possibly check for that without the . prefix too)
C:\Users\{User}\AppData\Local\Temp\npm-*
  1. 再次安装 node.js

我同样的错误,但当我试图更新模块“科尔多瓦”版本9。我通过使用 --force强制安装来修复它。我使用的 npm 命令:

npm i -g --force cordova@9

这招对我很管用

npm install -g --force gatsby-cli

谢谢

对于 Windows 用户(特定于 Windows 10) ,这必须解决问题。

进入这个文件夹:

C:\Users\[UserName]\AppData\Roaming\

删除或重命名 npmnpm-cache文件夹。

这解决了我在 Windows 中的问题。

我有一个类似的问题,但是是因为最初的项目安装

yarn install

然后,当我尝试使用

npm install

我发现了同样的错误。所以确保只使用一个: yarn或者 npm。我用

yarn add <vendor_name>

但是如果改为使用 npm,也会产生同样的效果,那么 需要会添加一个依赖项。

我使用 nvm 将节点版本降级为10,并在此过程中安装了更新版本的 npm (v6)。之后,软件包安装了 w/o 错误。所以它要么是 npm,要么是节点版本。

在我的例子中,当尝试安装例如程序 mermaid-cli,并且已经安装了 npm 时,

npm install @mermaid-js/mermaid-cli

把这个错误置于疑问之中。

当我添加 --force时,输出只是缩短了,但是同样的错误:

$ sudo npm install @mermaid-js/mermaid-cli --force
npm WARN using --force I sure hope you know what you are doing.
npm WARN enoent ENOENT: no such file or directory, open '/home/MY_USER/package.json'
npm WARN MY_USER No description
npm WARN MY_USER No repository field.
npm WARN MY_USER No README data
npm WARN MY_USER No license field.


npm ERR! code EEXIST
npm ERR! path /home/MY_USER/node_modules/npm/node_modules/.bin/rimraf
npm ERR! Refusing to delete /home/MY_USER/node_modules/npm/node_modules/.bin/rimraf: is outside /home/MY_USER/node_modules/npm/node_modules/rimraf and not a link
npm ERR! File exists: /home/MY_USER/node_modules/npm/node_modules/.bin/rimraf
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.


npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-02-03T13_41_52_634Z-debug.log

然后,我按照接受的答案,即您只需要再次删除并安装 npm,因此从安装 home的目录中删除了目录 node_modules

然而,我在运行 npm install时仍然遇到了错误:

$npm install
npm WARN saveError ENOENT: no such file or directory, open '/home/MY_USER/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/home/MY_USER/package.json'
npm WARN MY_USER No description
npm WARN MY_USER No repository field.
npm WARN MY_USER No README data
npm WARN MY_USER No license field.


up to date in 0.865s
found 0 vulnerabilities

这个问题的简单解决方法是在删除 npm的 node _ module 时再次安装带有 npm的程序!虽然 npmnode_modules被删除了,我碰巧通过输入命令找到了答案。跑过去了。

日志:

$npm install @mermaid-js/mermaid-cli


> puppeteer@13.1.3 install /home/MY_USER/node_modules/puppeteer
> node install.js


Downloading Chromium r950341 - 142 Mb [====================] 100% 0.0s
Chromium (950341) downloaded to /home/MY_USER/node_modules/puppeteer/.local-chromium/linux-950341
npm WARN saveError ENOENT: no such file or directory, open '/home/MY_USER/package.json'
npm WARN notsup Unsupported engine for commander@8.3.0: wanted: {"node":">= 12"} (current: {"node":"10.19.0","npm":"6.14.4"})
npm WARN notsup Not compatible with your version of node/npm: commander@8.3.0
...
npm WARN MY_USER No description
npm WARN MY_USER No repository field.
npm WARN MY_USER No README data
npm WARN MY_USER No license field.


+ @mermaid-js/mermaid-cli@8.13.10
added 147 packages from 94 contributors and audited 147 packages in 26.338s


10 packages are looking for funding
run `npm fund` for details


found 0 vulnerabilities

总结:

如果 npm install失败,安装任何您喜欢或不喜欢的程序,但使用 npm命令安装 安装一个程序,即使您刚刚删除了 npmnode_modules目录。它将再次下载 node_modules,在我的情况下,程序工作。