NPM:ENOENT:没有这样的文件或目录,重命名

60

我在项目中使用了gulp,然后决定删除所有开发依赖项并切换到webpack,但每次尝试使用npm安装时都出现错误:

我在项目中使用gulp,然后决定删除所有开发依赖项并切换到webpack,但每次尝试使用npm安装时都出现错误:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules\fsevents):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Error: EPERM: operation not permitted, rename 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\.staging\fsevents-e80c4ef4\node_modules\are-we-there-yet' -> 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\.staging\are-we-there-yet-5db4c798'

npm ERR! path C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\acorn
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\acorn' -> 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\.acorn.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\MiguelFrias\AppData\Roaming\npm-cache\_logs\2018-04-04T11_54_23_587Z-debug.log

有任何想法是什么原因导致这种情况发生。


3
尝试在存放于Dropbox的文件夹中安装Express时,遇到了类似的问题。因此,我将其安装到了Dropbox之外的临时文件夹中,再将其复制进来,这解决了我的问题。虽然有些烦人。 - Kebman
2
@kebman :在尝试了许多建议之后,您挽救了我的一天:dropbox。 - Ad Gerrits
32个回答

93

只要删除package-lock.json文件,然后安装包,这就是你所需要的,也应该可以正常工作。

rm package-lock.json && npm i

13
当您想安装软件包时,应停止Yarn或npm脚本,然后再次运行它。 - xargr
3
你能解释一下为什么会发生这种情况以及为什么需要删除lock.json文件吗? - Xanlantos
这个文件 package-lock.json 在哪里? - TriCore
@TriCore 它位于根目录,与 package.json 相同的路径下。 - xargr
2
这对我没有用,因为在安装全局包时发生了错误。 运行npm cache verify就搞定了。 - 695Multimedia
那个 package-lock.json 文件是有其存在的原因的。删除它并重新安装是一种随意的更改,可能会破坏东西,引入安全漏洞等。 - Oleg Mihailik

35

当我遇到这个错误时,我在任务管理器中查找了所有正在运行的node实例(我在Windows上使用进程资源管理器),并关闭/结束了所有正在运行的node实例。对我来说,通常是WebStorm或VS Code。关闭这些程序并确保没有正在运行的node进程之后,npm install可以再次正常工作。


是的,另一个节点应用程序正在从另一个终端运行。这对我来说是这种情况。 - IsmailS
对我来说是个解决方案。如果在Windows任务管理器中有多个Node进程实例,NPM就不能在WSL中工作。 - Dmitry S.
2
在我的情况下,这些节点实例是由VSCode调用的。 - Dmitry S.
3
是的,关闭VSCode有帮助。 - svarog
太好了!谢谢,它帮助了。 - Alina Striltsova

23

使用缓存验证命令解决了我的问题

npm cache verify

1
在我苦苦挣扎了两天之后,这个方法终于对我起作用了。谢谢。 - Akshay Antony
1
运行上述命令对我有效。但是,出现了一个提示要运行sudo chown -R 501:20 "<path/to/your/.npm>"。之后我运行了npm install,一切正常。我的node版本是v19.9.0,npm版本是9.6.3。 - Emmanuel R
我正在尝试安装Bootstrap,那个命令帮了我大忙(然后我意识到另一个错误告诉我要手动创建mkdir,所以这可能更有帮助)。 - Dominika Wojewska

6
我最简单的解决方法是:
npm uninstall -g

然后:

npm install -g

5

我删除了node_modulespackage_lock.json,然后运行npm install,它就能正常工作了。


4

我正在使用
-node v15.5.0

-npm v6.14.10

尝试以下操作:

  1. 关闭 "expo start"
  2. 删除 "package-lock.json"
  3. 现在尝试安装包

例如: npm i @react-navigation/native

这将解决问题。


3

如果您遇到此错误,可以按照以下步骤进行热修复:

删除 node-modules 文件夹 运行命令 npm cache clean --force 运行命令 npm install 使用 npm install your-package-name 重新安装包


3
第二行可能会给出一些线索,提示正在发生的事情:
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Error: EPERM: operation not permitted, rename 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\.staging\fsevents-e80c4ef4\node_modules\are-we-there-yet' -> 'C:\Users\MiguelFrias\Desktop\Therabytes\node_modules\.staging\are-we-there-yet-5db4c798'

看起来npm在您尝试使用的文件夹上没有足够的权限。

您可以尝试:

  • 再次删除npm_modules。
  • 使用管理员权限打开您正在使用的任何编辑器/终端以进行npm install

我正在使用Commander(Cmder),我已经尝试删除node_modules并以管理员身份运行终端,但仍然出现相同的问题。 - Miguel Frias

3
我找到了解决方案,显然是npm的最新版本出现了某种问题。我使用的是“npm version 5.6.0”,我将其降级为“npm version 5.3.0”。结果确实起作用了,在安装了几个包后,我仍然遇到了同样的错误。
好的,我将npm升级到最新版本“5.8.0”,现在一切都完美地运行了。之前遇到的问题似乎与Atom有关,它拒绝了构建过程中安装包的依赖项的许可。

3

我刚刚重新尝试运行

npm install 

并且它成功了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接