在npm install上出现错误"ETXTBSY:文本文件正忙"

Mar*_*off 27 javascript node.js npm laravel homestead

在跑步时npm install [any package]甚至npm install在宅基地上我都会收到以下错误:

npm ERR! ETXTBSY: text file is busy, rmdir '/home/vagrant/valemus-shop-starter/valemus-shop/node_modules/fsevents'
Run Code Online (Sandbox Code Playgroud)

可以在这里看到调试日志

  • Box'laravel/homestead'(v3.0.0)
  • 节点:v8.2.1
  • NPM:5.3.0

我尝试删除fsevents目录,但它不存在.

我该如何解决?

Bab*_*pey 24

当我想改变前端反应时,我在Windows 10 + VirtualBox(VBox)+ Vagrant + Laravel Homestead上遇到了同样的事情.

经过大量的搜索和反复试验,这个解决方案对我有用,也许它也适合你.

停止了流浪汉:

vagrant halt
Run Code Online (Sandbox Code Playgroud)

在Homestead目录中的Vagrantfile的configure部分添加了以下内容

  config.vm.provider "virtualbox" do |v|
        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end
Run Code Online (Sandbox Code Playgroud)

以管理员身份启动cmd

然后 vagrant up

vagrant ssh

cd到开发目录

然后删除node_modules目录,rm -rf node_modules/ 如果有的话

然后跑了 sudo npm install && npm run dev

整个事情安装没有任何警告或错误.

这是两小时阅读的结果:)

编辑:

如果您的问题没有解决,并且您有上述设置,则可以使用其他解决方案:

也在Windows机器上安装节点

然后cd到您的开发目录并npm install从Windows 运行,您将获得相同的结果.

您也可以在npm run watch之后启动Windows cmd.

这有助于我从VM中解除负载,让Windows执行监视并接收npm run watchWindows中的通知.

干杯

  • 在Windows上运行npm为我工作. (2认同)

kpr*_*ast 10

将npm版本降级到5.7.1对我来说是个窍门.

用于降级的命令: npm install -g npm@5.7.1

我使用的是Win10,Vagrant,Ubuntu v14.04和Node v8.11.4


Wil*_*ang 9

只需在Windows中而不是在Homestead中发出"npm install".当然,你需要安装npm for windows才能做到这一点.

  • 好.我的意思是在主机操作系统中发出"npm install",而不是在客户操作系统中.这解决了我遇到的问题.但是,对于全局程序包,您需要在guest虚拟机操作系统中发出"npm install -g {package}". (4认同)
  • 但是问题是,如果您打算在来宾OS上实际使用Node(用于构建工具等),则现在需要确保主机和来宾OS的Node版本匹配。 (2认同)

小智 8

这样的事情我也经历过

我的环境是linux

fsevents是一个专用于mac的模块

请尝试以下命令

npm install --no-optional


Hay*_*zel 8

我在Homestead上的Windows 10机器上遇到了这个问题.经过很多努力,我用这种方式解决了它;

删除node_modules文件夹.

您在Windows终端上运行此命令:

npm install --no-bin-links (After some experience it is necessary for virtual machines)
npm rebuild --no-bin links
Run Code Online (Sandbox Code Playgroud)

通常它在这些命令之后工作,但是如果你已经犯了这个错误

"Node Sass无法找到适合您当前环境的绑定:"

请在您的Homestead Terminal上运行此命令以安装Sass for Linux节点.

npm rebuild node-sass
Run Code Online (Sandbox Code Playgroud)

如果不起作用,请尝试使用纱线.删除节点模块文件夹package.json.lock和yarn.lock(如果有)文件和类型

yarn install
Run Code Online (Sandbox Code Playgroud)

如果所有这些都没有保存,请使用虚拟机中的所有npm命令. 这将是工作.

我希望这可以帮助你...


Azh*_*tak 5

即使执行以下操作,我仍然遇到错误

  config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, 
     "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end
Run Code Online (Sandbox Code Playgroud)

Babak Bandpey所建议

原来,文件路径字符限制还有另一个烦人的问题。如果您使用长名称的节点模块,则这种情况经常发生。您可以在将vagrant ssh插入linux vm之后,按照以下步骤轻松解决此问题:

  1. 在您的主文件夹中创建“ node_modules”文件夹 mkdir ~/node_modules
  2. 将符号链接添加到您刚刚在项目文件夹中创建的“ node_modules”文件夹

    ln -sf ~/node_modules /vagrant/your-project-folder

该解决方案将确保所有节点模块都存储在主目录中,而不是同步文件夹中。原始资料: https //blog.rudylee.com/2014/10/27/symbolic-links-with-vagrant-windows/

希望它可以帮助有类似问题的人,谢谢!