【问题标题】:error "ETXTBSY: text file is busy" on npm installnpm install 上的错误“ETTXTBSY:文本文件正忙”
【发布时间】:2018-01-22 13:06:15
【问题描述】:

在宅基地上运行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 目录,但是它不存在。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript node.js laravel npm homestead


    【解决方案1】:

    同样的事情发生在我身上

    我的环境是linux

    fsevents是mac专用的模块

    请尝试以下命令

    npm install --no-optional

    【讨论】:

      【解决方案2】:

      我也很难找到解决方案,但就是这样。

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

      要更新,可以安装n

      sudo npm install -g n
      

      然后:

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

      在流浪中运行:

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

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

      【讨论】:

        【解决方案3】:

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

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

        阻止流浪者:

        vagrant halt
        

        将以下内容添加到 Homestead 目录中 Vagrantfile 的配置部分

          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 机器上也安装 Node

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

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

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

        干杯

        【讨论】:

        • 这对我不起作用,但是错误并不严重。我可以在npm install 之后运行gulp
        • 在执行这些步骤之前需要更新节点$ sudo npm install n -g$ sudo n stable
        • 具有与此处所述相同的设置,无法进行任何工作 - 必须在 Windows 上默认为 npm
        • 如果上面的不行,你也可以运行:$ sudo yarn install,没有任何问题$ npm run dev
        【解决方案4】:

        我必须先删除 node_modules 文件夹,然后才删除

        sudo chmod a+x .
        

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

        sudo npm install --no-bin-links
        

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

        sudo npm run dev
        

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

        【讨论】:

        • 在执行这些步骤之前需要更新节点 $ sudo npm install n -g$ sudo n stable
        • sudo chmod a+x . - 我必须在哪个目录中? node_modules 的 parent ?或 inside node_modules ?
        【解决方案5】:

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

        【讨论】:

        • 作者的操作系统不是 Windows。
        • 好的。我的意思是在主机操作系统中发出“npm install”,而不是在来宾操作系统中。这解决了我遇到的问题。但是,对于全局包,您需要在来宾操作系统中发出“npm install -g {package}”。
        • 感谢@WilsonWang npm install 确实需要在主机上运行。 npm run dev 相同
        • 但问题是,如果您计划在客户操作系统上实际使用 Node(用于构建工具等),您现在需要确保您的主机和客户操作系统之间的 Node 版本匹配
        • 噢!删除了我的 node_modules,强制清除了缓存,几乎完全重新安装了节点,然后才看到这个并意识到我在 ssh 中。感谢您为我节省了更多浪费的时间。
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

          我在装有 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 找不到当前环境的绑定:”

          请在您的 Homestead Terminal 上运行此命令以安装 Node Sass for Linux。

          npm rebuild node-sass
          

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

          yarn install
          

          如果都没有救你,使用虚拟机外的所有npm命令。它会工作。

          希望对你有帮助...

          【讨论】:

            【解决方案8】:

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

              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/

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

            【讨论】:

              【解决方案9】:

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

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

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

              【讨论】:

              • 这对我有用,谢谢! Windows 10、流浪者、CentOs 7.5。知道为什么我们会在较新的版本中出现这些错误吗?
              • 也为我工作! CentOS 7 在 Windows 8.1 上的 Vagrant 中运行。我降级到 npm 版本 6(使用 nvm)并且问题消失了。
              • 在 Vagrant scotch-box-pro 上为我工作
              猜你喜欢
              • 2015-02-06
              • 2018-11-15
              • 2018-02-12
              • 2021-11-11
              • 2022-06-20
              • 2018-12-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多