错误" ETXTBSY:文本文件繁忙"在npm install

时间:2017-08-14 16:20:14

标签: javascript node.js laravel npm 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'

可以看到调试日志here

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

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

我该如何解决这个问题?

9 个答案:

答案 0 :(得分:23)

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

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

停止流浪汉:

vagrant halt

在Homestead目录

中的Vagrantfile的configure部分添加了以下内容
  config.vm.provider "virtualbox" do |v|
        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

以管理员身份启动cmd

然后vagrant up

vagrant ssh

cd to development dir

然后按rm -rf node_modules/ 移除了node_modules dir(如果有的话)

然后运行sudo npm install && npm run dev

并且整个安装过程没有任何警告或错误。

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

修改

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

在Windows机器上安装节点

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

您也可以在之后从Windows cmd发起npm run watch

这有助于我解除VM的负担,让Windows执行监视并接收Windows中npm run watch的通知。

干杯

答案 1 :(得分:9)

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

答案 2 :(得分:9)

将npm版本降级到5.7.1对我来说很成功。

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

我正在使用Win10,Vagrant,Ubuntu v14.04和Node v8.11.4

答案 3 :(得分:8)

同样的事发生在我身上

我的环境是linux

fsevents是专用于mac

的模块

请尝试以下命令

npm install --no-optional

答案 4 :(得分:8)

我在配备Homestead的Wi​​ndows 10机器上为这个问题苦苦挣扎。经过大量的努力,我以这种方式解决了这个问题;

删除您的node_modules文件夹。

您在 Windows终端上运行以下命令:

npm install --no-bin-links (After some experience it is necessary for virtual machines)
npm rebuild --no-bin links

通常在执行以下命令后可以使用,但是如果出现此错误

  

“ Node Sass找不到您当前环境的绑定:”

请在 Homestead Terminal 上运行此命令以安装Linux节点Sass。

npm rebuild node-sass

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

yarn install

如果所有这些命令都不能保存您,请在虚拟机中使用所有npm命令。将起作用。

希望这对您有帮助...

答案 5 :(得分:4)

即使按照

进行操作,我仍然遇到错误。
  config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, 
     "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

根据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/

希望它有助于解决类似问题,谢谢!

答案 6 :(得分:3)

我也很难找到解决方案,但现在就是。

  1. 确保将节点更新到最新版本
  2. 要进行更新,您可以安装n

    sudo npm install -g n
    

    然后只是:

    sudo n latest
    
    1. 将节点脚本设置为跨平台使用环境变量
    2. 在流浪汉中:

      npm install --save-dev cross-env
      npm install 
      npm run dev 
      

      虽然我花了整整一天时间找到合适的解决方案(https://www.npmjs.com/package/cross-env

      ,但确实如此

答案 7 :(得分:3)

我也遇到了“npm install”的问题,我使用Windows 10.最后我修好了,我做的是我退出“vagrant ssh”并运行“vagrant box update”,然后“npm install”工作了。请注意,我从“vagrant ssh”中运行了“vagrant box update”和“npm install”。希望它有所帮助。

答案 8 :(得分:1)

我必须首先删除node_modules文件夹,然后我做了

sudo chmod a+x .

为了确保我有权在机器上做任何事情,然后我

sudo npm install --no-bin-links

根据我的经验,在vagrant中不需要bin链接,因为这些VM不支持bin链接(如果我错了,请纠正我)。那我就是

sudo npm run dev

此时有些人可能会遇到没有发现交叉env的错误。在这种情况下,只需删除package.json文件中的cross-env并再次运行它。它对我有用,但有些人仍然遇到同样的问题。可能值得一试。