繁体   English   中英

npm 错误! 错误:EPERM:不允许操作,

[英]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尝试更改文件时另一个进程打开或读取(锁定)文件,则整个安装过程都会失败。

如何修复:

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

如果您仍然遇到上述第 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM