错误:EPERM:不允许操作,取消链接'D:\ Sources \ ** \ node_modules \ fsevents \ node_modules \ abbrev \ package.json'

时间:2017-09-03 03:30:14

标签: npm package.json

我刚刚将npm更新为5.4.0 现在,每当我想安装一个npm包时,我都会收到以下错误:

D:\Sources\DownloadCms\Md.Download\Web.Angular>npm install mds.angular.datetimepicker@latest --save
npm ERR! path D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json'
npm ERR!     at Error (native)
npm ERR!  { Error: EPERM: operation not permitted, unlink 'D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.jso
n'
npm ERR!     at Error (native)
npm ERR!   stack: 'Error: EPERM: operation not permitted, unlink \'D:\\Sources\\DownloadCms\\Md.Download\\Web.Angular\\node_modules\\fsevents\\node_modules\\ab
brev\\package.json\'\n    at Error (native)',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'unlink',
npm ERR!   path: 'D:\\Sources\\DownloadCms\\Md.Download\\Web.Angular\\node_modules\\fsevents\\node_modules\\abbrev\\package.json' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Mohammad\AppData\Roaming\npm-cache\_logs\2017-09-03T03_25_50_432Z-debug.log

我不确定,以管理员身份运行CMD

我还检查了D:\Sources\DownloadCms\Md.Download\Web.Angular\node_modules\fsevents\node_modules\abbrev\package.json\,路径中不存在package.json

修改 升级到v5.4.1,仍然会得到相同的错误,甚至无法解决--no-optional: - (

42 个答案:

答案 0 :(得分:40)

这是一个npm 5.4.0问题https://github.com/npm/npm/issues/18287

解决方法

  • 降级至5.3
  • 尝试使用--no-optional运行,即npm install --no-optional

答案 1 :(得分:35)

我能够通过以管理员身份运行命令提示符/ bash并关闭VSCode来解决此问题! 似乎VSCode正在锁定某些文件。 可能还有其他事情可能会为您锁定这些文件。

答案 2 :(得分:12)

如果你降级到5.3并且仍然像我一样在Windows中得到同样的错误 使用npm版本工作数小时后,我找到了以下解决方案:

1. 下载nodejs的最新推荐版本,这些天是node-v6.11.3-x64
2。用它卸载nodejs 3。转到C:\Users\{YourUsername}\AppData\Roaming文件夹并删除npmnpm-cache个文件夹
4. 再次运行nodejs的安装程序并安装它 5 使用npm i -g npm@5.3命令行更新npm到5.3 现在你应该使用npm而没有任何问题。

答案 3 :(得分:9)

我通过将npm从5.4.0降级到版本5.3来修复

npm i -g npm@5.3

我希望这对你有帮助

答案 4 :(得分:4)

我尝试在How to fix Node.js blog

找到此解决方案

只需使用

npm cache clean
如果它拒绝使用

,则在Windows中

npm cache clean --force

答案 5 :(得分:3)

我遇到了同样的问题,我要做的就是登录npm

npm login

或者

npm add user //请查阅文档以获取参数

答案 6 :(得分:2)

对我而言,它在git包中使用bash 尝试:

C:\Program Files\Git\bin\bash.exe

然后:

npm install mds.angular.datetimepicker@latest

答案 7 :(得分:2)

似乎有很多解决方案适用于降级npm版本。对我来说,解决方案是

npm install -force

我尝试降级npm版本,修改我的npm前缀配置以匹配npm目录,并清除缓存。这些都不起作用,但显然它们适用于其他人,所以它可能值得一试。

答案 8 :(得分:2)

我在Windows上遇到了同样的问题。

问题的根源很简单,它是对文件夹和文件的访问权限。

您需要在项目文件夹中

  1. 克隆项目后,更改文件夹的属性并更改用户的权限(授予对当前用户的完全访问权限)。
  2. 从项目文件夹中删除只读选项。 (步骤1和2需要很长时间,因为它们被复制到下面的整个树中。)
  3. 在项目文件夹中,重新安装节点(npm install reinstall -g)
  4. 禁用防病毒。 (可选)
  5. 禁用防火墙。 (可选)
  6. 重新启动PC。
  7. 清除npm缓存(清除npm)
  8. 安装项目的依赖项(npm install)

之后,将不再显示错误“ 错误:EPERM:不允许进行操作,取消链接”。

请记住在必要时重新激活防火墙和防病毒软件。

答案 9 :(得分:1)

就我而言,问题在于,我没有安装打字稿。虽然我确实安装了Node和Angular。 检查您是否已安装打字稿

Run this command: tsc -v

如果没有,则安装打字稿

Run this command: npm install -g typescript

最后安装必需的依赖项

Run this command: npm install

在项目的根文件夹中。

----希望这对某人有帮助----

答案 10 :(得分:1)

我通过删除 dist 文件夹解决了这个问题

--- 删除 dist 或 public 文件夹

答案 11 :(得分:1)

删除我的节点模块文件夹并运行普通的 npm install 为我做到了

答案 12 :(得分:1)

我的原因是在2个不同的终端上打开了我的项目文件夹。我通过关闭所有正在运行的终端(排除了代码)并再次执行安装命令来解决

我希望这对某人有帮助。

注意::删除node_modules无法解决问题。

答案 13 :(得分:1)

我正在使用VsCode,并通过停止应用程序服务器并运行npm install来解决了此问题。有些文件已被应用服务器锁定。

无需关闭IDE,只需确保没有其他进程可以锁定项目中的某些文件。

答案 14 :(得分:1)

当我将npm版本更新到最新版本5.4时,同样的错误发生在我身上 降级到版本5.3.0很有用。错误来自npm 5.4,你可以在issuses in npm 5.4中查看
npm install npm@5.3 -g

答案 15 :(得分:1)

对于Windows上的我来说,问题是路径长度太长。我将项目移到了更短的路径,并且有效。

答案 16 :(得分:1)

我想从外部硬盘驱动器运行npm install,因为这是我保存代码工作区的地方。 Windows 10操作系统。

但是我收到了与原帖相同的错误。以前的答案中没有一个对我有用,我尝试了所有这些:

  1. 卸载nodejs然后重新安装
  2. 卸载nodejs然后降级/安装较低版本的nodejs。
  3. npm install -force
  4. 从C:\ Users {YourUsername} \ AppData \ Roaming ... npm和npm-cache删除文件夹,然后重新安装。
  5. npm cache clean --force
  6. npm cache clean
  7. npm install --g或npm install --global
  8. 对我有用的是:

    1. 将文件夹从C:\ Program Files \ nodejs复制到D:\ Program Files \ nodejs
    2. 然后转到控制面板\系统和安全\系统
    3. 高级系统设置
    4. 环境变量
    5. 系统变量
    6. 双击路径
    7. 添加新路径
    8. D:\ Program Files \ nodejs
    9. 点击确定
    10. 重新启动PC。
    11. 从D:Drive
    12. 中尝试npm install

答案 17 :(得分:1)

已在NPM 5.6.0中修复

升级到NPM 5.6.0解决了我的问题。

答案 18 :(得分:0)

这是唯一对我有用的东西:

npm cache clean --force

npm install -g npm@latest --force

rm package-lock.json

npm i -force

答案 19 :(得分:0)

对于那些来自 Windows 操作系统的用户,您只需停止开发服务器,然后执行您的 npm install ... 命令。

奇怪的是,Windows 不允许在服务器运行时安装依赖项,但 MacOS 允许。 如果这不起作用,那么只能选择其他选项 - 清理缓存、降级 nodejs 等。

答案 20 :(得分:0)

对我来说 npm cache clean --force

然后重启

工作正常!

答案 21 :(得分:0)

对我来说是 Docker...

关闭应用程序容器的那一刻,我可以毫无问题地进行 npm install

P.S 我的节点版本是 14.15.5

答案 22 :(得分:0)

这对我来说很神奇:

  1. 关闭所有编辑器/IDE 和其他打开的控制台。
  2. 在项目文件夹中打开一个新的 cmd 提示符。
  3. 运行命令 npm install node-sass@^4.14.1
  4. 运行命令 npm install --no-optional

P.S.:我的节点版本在 14 以上。

答案 23 :(得分:0)

对于Windows,

  1. 下载nodejs的最新推荐版本,这些日期为node-v6.11.3-x64
  2. 用它卸载nodejs。
  3. 转到C:\Users\{YourUsername}\AppData\Roaming文件夹并删除npmnpm-cache个文件夹
  4. 再次运行nodejs的安装程序并安装
  5. 默认情况下,npm 3.10.10应与node-v6.11.3-x64一起安装。
  6. npm 3.10.10对我有用,但与5.3.X无效。 它也不适用于更高版本的节点(上面 node-v6.11.3-x64

答案 24 :(得分:0)

我遇到了同样的问题,无法使用上述任何解决方案解决问题。所以我尝试将我的项目目录移动到桌面上的其他位置。然后它显示,在运行时无法执行此操作,即使我没有在任何文本编辑器中打开该文件,所以我所做的是在运行命令框中键入 resmon.exe,然后单击 CPU 选项。然后放大相关的句柄部分并键入我的项目名称目录。它显示了一些正在运行该目录的进程,因此我选择了它们并右键单击它们并单击结束进程。 然后我能够将我的项目目录剪切粘贴到桌面上的其他位置,然后我运行 npm install 命令并能够成功执行。check out this image

答案 25 :(得分:0)

以我为例,打开了VS代码,并且该应用程序也在Metro bundler上运行,因此我只需要关闭Metro bundler并再次使用install命令就可以了。

答案 26 :(得分:0)

已经看到我的Windows Defender病毒扫描程序在运行脚本时开始占用CPU,我怀疑这是实际原因,但是由于我无法在商业领域进行调整,因此< / p>

由于我的脚本在执行npm install时失败,因此我只是尝试了

npm install --verbose

这使它可以完美运行。它可能无法解决根本问题,但是它允许我的安装至少将所有依赖项下载并提取到本地缓存一次,因此,一切工作都更加顺畅。

我认为此命令将对磁盘的写入/读取速度降低了几分之一秒,而将其写入命令提示符时,这为病毒检查程序提供了足够的时间来完成其工作,而不会在磁盘上造成死锁文件。

答案 27 :(得分:0)

尝试运行:-'rm -rf node_modules && npm i'。它对我有用。

答案 28 :(得分:0)

我只是做一个npm安装而遇到同样的问题。 在禁用防病毒的情况下运行(如果使用Windows Defender,请关闭实时保护和基于云的保护)。那对我有用!

答案 29 :(得分:0)

我在Windows中有此日志。 我做了以下

  • 关闭Visual Studio代码
  • 以管理员身份运行命令行

答案 30 :(得分:0)

清除缓存并npm更新到最新,对我来说是有效的工作

npm cache clean --force

npm install -g npm@latest --force

答案 31 :(得分:0)

publish必须先于function openModal(url) { $('#loadingModel').modal('show'); //Open loading model var dataURL = url; $('.modal-body').load(dataURL, function () { $('#myModal').modal({ backdrop: 'static', keyboard: false }) $('#myModal').modal({ show: true }); $('#loadingModel').modal('hide'); //Close loading model after main model loads }); }

答案 32 :(得分:0)

就我而言,在用于构建(Windows)的VM上运行“ npm install”的多个实例时,我遇到了类似的问题

由于它是仅用于构建的VM,因此没有其他程序可以锁定文件。我尝试禁用了各种无效的防病毒设置。 “ npm缓存清除”和“ npm缓存验证”有效,但是对我来说这不是一个正确的解决方案,因为我无法猜测何时有人会针对不同的发行版/环境从Jenkins触发构建作业,从而导致“ npm install”的多个实例,因此我无法将其添加到构建脚本中,也无法每次都登录到VM并手动清除/删除缓存文件夹。

最后,经过一番研究,我最终使用以下命令为每个作业使用单独的缓存路径运行“ npm install”:

npm install --cache path/to/some/folder

由于所有同时运行的作业现在具有单独的缓存路径,而不是公用的全局路径(Users / AppData / Roaming /),因此此问题已解决,因为作业不再尝试锁定和访问相同的文件,来自公共npm缓存。

请注意,您可以安装具有缓存路径的单个软件包,如下所示:

npm install packageName --cache path/to/some/folder

我无法在npm文档中找到这种提供高速缓存路径的方法,但是我尝试了一下并成功了。 我正在使用npm6,自npm5起,它似乎可以正常工作。

[参考:How to specify cache folder in npm5 on install command?

此解决方案也可能适用于其他情况,尽管可能合适也可能不合适。

答案 33 :(得分:0)

尝试了所有内容,包括节点/ npm升级,缓存清理和还原代码后,除了一件简单的事情外,没有任何帮助:在开发/构建期间关闭Windows 10的实时保护。看起来最新的更新使其更具攻击性。

答案 34 :(得分:0)

我只是完全关闭机器,而不是使其休眠,然后重新启动它。 以管理员身份运行CMD,并使用npm install命令。奏效了。

答案 35 :(得分:0)

删除package-lock.json已为我修复。

答案 36 :(得分:0)

关闭Visual Studio代码可以帮助我解决此问题。

答案 37 :(得分:0)

我的问题是执行命令(npm audit fix all)。我在关闭VSCODE时解决了该问题,然后重新执行了命令,没有任何问题。

答案 38 :(得分:0)

请关闭所有IDE(如Visual Studio代码)。通过node.js命令提示符运行npm install命令。 享受!

答案 39 :(得分:0)

如果以上所有方法均无法满足您的要求,则您可能希望

  • 重新启动系统
  • 以管理员身份运行命令提示符
  • 运行npm命令

答案 40 :(得分:0)

npm cache verify解决了我的问题。 我当时在做:ng new my-app 而且我遇到了类似的错误

我有 节点版本:10.16.0
npm v 6.9.0

答案 41 :(得分:-1)

只需“重新启动系统”并再次尝试删除该文件。它应该可以工作。