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

问题描述 投票:1回答:2

我试图运行npm install并继续获取权限错误,无论我是否以管理员身份运行它。我的环境规格如下。

Windows 7
Virtual Box 5.1
Vagrant 2.0.1
Homestead Box
NPM 5.5.1
NODE 8.9.1

我已经搜索了不同的支持网站,并尝试了建议的修复程序,但我总是得到一个与错误权限相关的新问题:

npm ERR! ETXTBSY: text file is busy, rmdir

要么

npm ERR! Error: EPERM: operation not permitted,

我使用命令`npm install --no-bin-links',它仍然无法正常工作。

sudo npm install --no-bin-links
npm ERR! path /home/vagrant/Code/project/node_modules/sum-up
npm ERR! code EPERM
npm ERR! errno -1
npm ERR! syscall rename
npm ERR! Error: EPERM: operation not permitted, rename '/home/vagrant/Code/project/node_modules/sum-up' -> '/home/vagrant/Code/project/node_modules/.sum-up.DELETE'
npm ERR!  { Error: EPERM: operation not permitted, rename '/home/vagrant/Code/project/node_modules/sum-up' -> '/home/vagrant/Code/project/node_modules/.sum-up.DELETE'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, rename '/home/vagrant/Code/project/node_modules/sum-up' -> '/home/vagrant/Code/project/node_modules/.sum-up.DELETE'
npm ERR!      errno: -1,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'rename',
npm ERR!      path: '/home/vagrant/Code/project/node_modules/sum-up',
npm ERR!      dest: '/home/vagrant/Code/project/node_modules/.sum-up.DELETE' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, rename \'/home/vagrant/Code/project/node_modules/sum-up\' -> \'/home/vagrant/Code/project/node_modules/.sum-up.DELETE\'',
npm ERR!   errno: -1,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'rename',
npm ERR!   path: '/home/vagrant/Code/project/node_modules/sum-up',
npm ERR!   dest: '/home/vagrant/Code/project/node_modules/.sum-up.DELETE' }
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!     /home/vagrant/.npm/_logs/2018-01-23T19_51_11_713Z-debug.log
npm vagrant npm-install homestead
2个回答
0
投票

在我的情况下,不确定如何,但似乎外部Windows服务锁定了部分npm文件。所以我不得不在我的流浪汉中安装一个外部文件夹(这是我的项目之外),并且不能直接在Windows中看到,并将此文件夹用作npm node_modules文件夹:

sudo mkdir /node_modules && sudo chmod 777 /node_modules
sudo mount --bind /node_modules /vagrant/real_path_to_your_app/node_modules

还要在/ etc / fstab中添加以下行:

/node_modules   /vagrant/real_path_to_your_app/node_modules   none   bind    0    0

然后从/ vagrant / real_path_to_your_app中执行:

/vagrant/real_path_to_your_app$ sudo npm install --save your_module

它对我有用 - 实际上使用挂载目录/ node_modules。


0
投票

底层问题与Virtualbox共享如何处理Windows文件锁定有关。无论使用标准共享文件夹(vboxsf)还是nfs,都会发生这种情况。如果在npm尝试更改文件时由另一个进程打开或读取(锁定)文件,则整个安装过程将失败。

怎么修:

  1. 从管理员终端运行vagrant up(和其他命令)。这可确保符号链接正常工作。还有其他方法可以启用符号链接 - 如果您使用其中一个符号链接,请务必使用共享文件夹中的ln -s a b对其进行测试。
  2. 通过禁用进程或排除vagrant文​​件夹,确保没有其他进程打开共享文件夹中的任何文件。这包括但不限于: Windows Defender或其他防病毒软件 Windows搜索索引或其他索引软件 Dropbox或其他文件同步软件。

如果您仍然遇到上述第2点的问题,您可以使用Process Monitor,过滤到您的vagrant目录,以检测Virtualbox以外的任何进程(VBoxHeadless.exe)的访问。

有了上述原因,我能够毫无问题地成功运行npm install

© www.soinside.com 2019 - 2024. All rights reserved.