npm 安装错误 "ETXTBSY: text file is busy"

error "ETXTBSY: text file is busy" on npm install

当 运行 npm install [any package] 甚至 npm install 在 homestead 上时,我收到以下错误:

npm ERR! ETXTBSY: text file is busy, rmdir '/home/vagrant/valemus-shop-starter/valemus-shop/node_modules/fsevents'

可以看到调试日志here

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

我该如何解决这个问题?

我也遇到过同样的事情

我的环境是linux

fsevents 是专用于 mac

的模块

请尝试以下命令

npm install --no-optional

我也在努力寻找解决方案,但在这里。

  1. 确保将节点更新到最新版本

要更新,可以安装n

sudo npm install -g n

然后就:

sudo n latest
  1. 设置 Node 脚本以跨平台使用环境变量

流浪汉运行 :

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

成功了,尽管我花了一整天时间寻找正确的解决方案 (https://www.npmjs.com/package/cross-env)

我 运行 在 Windows 10 + VirtualBox (VBox) + Vag运行t + Laravel Homestead 上做了同样的事情,当我想改变反应前端.

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

停止流浪运行t:

vagrant halt

将以下内容添加到 Homestead 目录中 Vag运行t 文件的配置部分

  config.vm.provider "virtualbox" do |v|
        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

以管理员身份启动 cmd

然后 vagrant up

vagrant ssh

cd 到开发目录

然后通过 rm -rf node_modules/ (如果有)

删除了 node_modules 目录

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

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

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

编辑:

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

也在你的windows机器上安装节点

然后 cd 到你的开发目录和 运行 来自 Windows 的 npm install 你会得到相同的结果。

之后您还可以从 windows cmd 启动 npm run watch

这帮助我减轻了 VM 的负载,让 Windows 进行监视并接收 Windows 中 npm run watch 的通知。

干杯

我不得不先删除 node_modules 文件夹,然后

sudo chmod a+x .

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

sudo npm install --no-bin-links

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

sudo npm run dev

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

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

我对 "npm install" 也有问题,我使用 Windows 10。最后我修好了,我所做的是退出 "vagrant ssh" 和 运行 "vagrant box update",然后 "npm install" 起作用了。请注意,"vagrant ssh" 中的 运行 "vagrant box update" 和 "npm install"。希望对你有帮助。

我在装有 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

通常在这些命令之后它会起作用,但是如果你有这个错误

"Node Sass could not find a binding for your current environment:"

请 运行 在您的 Homestead 终端 上使用此命令为 Linux.

安装节点 Sass
npm rebuild node-sass

如果不行,试试用yarn。删除节点模块文件夹 package.json.lock 和 yarn.lock(如果有)文件并键入

yarn install

如果它们都不能救你,使用虚拟机外的所有 npm 命令。 会起作用的。

希望对您有所帮助...

即使执行了以下操作,我仍然收到错误消息

  config.vm.provider "virtualbox" do |v|
    v.customize ["setextradata", :id, 
     "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
  end

根据Babak Bandpey

的建议

原来还有一个烦人的文件路径字符限制问题。如果您使用长名称的节点模块,这种情况经常发生。在 vagrant ssh into linux vm:

之后,您可以按照以下步骤轻松解决此问题
  1. 在您的主文件夹中创建“node_modules”文件夹 mkdir ~/node_modules

  2. 将符号 link 添加到您刚刚在项目文件夹中创建的“node_modules”文件夹中

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

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

希望对遇到类似问题的人有所帮助,谢谢!

将 npm 版本降到 5.7.1 对我有用。

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

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