[英]npm ERR! Error: EPERM: operation not permitted,
我正在尝试运行 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
当我遇到类似的错误时,我关闭了 Visual Studio 代码编辑器并运行了 npm install。 它解决了这个问题。
根本问题与 Virtualbox 共享如何处理 Windows 文件锁定有关。 无论是使用标准共享文件夹 (vboxsf) 还是 nfs,都会发生这种情况。 如果在npm
尝试更改文件时另一个进程打开或读取(锁定)文件,则整个安装过程都会失败。
如何修复:
vagrant up
(和其他命令)。 这可确保符号链接正常工作。 还有其他方法可以启用符号链接 - 如果您使用其中一种方法,请务必在共享文件夹中使用ln -sab
对其进行测试。如果您仍然遇到上述第 2 点的问题,您可以使用Process Monitor ,过滤到您的 vagrant 目录,以检测除 Virtualbox (VBoxHeadless.exe) 之外的任何进程的访问。
有了上述内容,我就可以成功运行npm install
。
我只需要关闭打开 package.json 文件的 Visual Studio Code IDE,在此之后尝试 npm install 并且它对我有用。
就我而言,不确定具体如何,但似乎外部 Windows 服务锁定了 npm 文件的一部分。 所以我不得不在我的 vagrant 中挂载一个外部文件夹(它不在我的项目中)并且不能从 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。
我在 Eclipse IDE 上遇到了这个错误。 解决方案是重新启动它,然后运行npm install
。 之后一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.