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

时间:2018-01-23 20:09:48

标签: npm vagrant npm-install homestead

我正在尝试运行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

5 个答案:

答案 0 :(得分:2)

出现类似错误时,我关闭了Visual Studio代码编辑器并运行npm install。它解决了问题。

答案 1 :(得分: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。

答案 2 :(得分:0)

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

如何修复:

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

如果上述第2点仍然存在问题,则可以使用Process Monitor(已过滤到无业游民目录)来检测除Virtualbox(VBoxHeadless.exe)之外的任何进程的访问。

通过上述操作,我可以成功运行npm install,而不会出现问题。

答案 3 :(得分:0)

我只需要关闭我的Visual Studio Code IDE,该IDE已打开package.json文件,并在此之后尝试npm install,并且对我有用。

答案 4 :(得分:0)

我在 Eclipse IDE 上遇到了这个错误。解决方法是重启它,然后运行npm install。之后一切正常。