【问题标题】:npm ERR! Error: EPERM: operation not permitted,npm 错误!错误:EPERM:不允许操作,
【发布时间】:2018-01-23 20:09:47
【问题描述】:

我正在尝试运行 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没有权限写这个文件夹。在这里查看文档:docs.npmjs.com/getting-started/fixing-npm-permissions
  • 感谢 Ragnar,我试过了,但没用。
  • 对我来说,99% 确定这是权限问题。也试试:npm cache clean --force 然后npm install -g npm@latest --force 然后npm cache clean --force 其他解决方案,安装yarn 并尝试它。

标签: npm vagrant npm-install homestead


【解决方案1】:

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

如何解决:

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

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

有了上述内容,我可以成功运行npm install 而不会出现问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我只需要关闭打开 package.json 文件的 Visual Studio Code IDE,然后尝试 npm install,它对我有用。

      【讨论】:

        【解决方案4】:

        在我的情况下,不确定具体如何,但似乎外部 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。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-09-10
            • 1970-01-01
            • 2018-05-26
            • 2017-01-10
            • 2019-11-04
            • 1970-01-01
            • 2022-12-18
            • 2021-01-14
            相关资源
            最近更新 更多