NPM安装失败 - fsevents

7
我在我的laravel项目中无法正确安装npm。我在vagrant box(ubuntu-trusty-64)上运行laravel。当我运行“npm install”时,我会得到我过去的错误(下面链接)。然后我找到了一些信息,它说当使用Windows主机操作系统上的vagrant box时,应该在不使用符号链接的情况下运行它,所以我运行了“npm install --no-bin-links”,但仍然出现了第一个错误。然后,在得到一些帮助后,我运行了“rm -rf node_modules”,然后运行了“npm install --no-bin-links”,它似乎可行,但停滞不前,请参见pastebin的后半部分。
请帮忙! pastebin: https://pastebin.com/wuRkjqi6
更新:
只是为了向大家更新状态,我彻底删除了npm并重新安装了它,按照以下方式进行操作:
https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
适用于node.js 8
然后我直接从VirtualBox上的主机vm运行了“sudo npm install --no-bin-links --verbose”,绕过了vagrant ssh;但它仍然向我爆炸了。但这次围绕fsevents出现错误。
27990 info lifecycle vue@2.4.2~postinstall: vue@2.4.2
27991 verbose unlock done using /home/vagrant/.npm/_locks/staging-71408633a969dee2.lock for /home/vagrant/projects/MusekClub/node_modules/.staging
27992 verbose stack Error: ETXTBSY: text file is busy, rmdir '/home/vagrant/projects/MusekClub/node_modules/fsevents/node_modules'
27993 verbose cwd /home/vagrant/projects/MusekClub
27994 verbose Linux 3.13.0-125-generic
27995 verbose argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "--no-bin-links" "--verbose"
27996 verbose node v8.2.1
27997 verbose npm  v5.3.0
27998 error path /home/vagrant/projects/MusekClub/node_modules/fsevents/node_modules
27999 error code ETXTBSY
28000 error errno -26
28001 error syscall rmdir
28002 error ETXTBSY: text file is busy, rmdir '/home/vagrant/projects/MusekClub/node_modules/fsevents/node_modules'
28003 verbose exit [ -26, true ]

最后,今天早上我尝试从头开始重建vagrant box,当我在virtualbox主机上重新运行'sudo npm install --no-bin-links --verbose'时,我得到了以下结果:
vagrant@vagrant-ubuntu-trusty-64:~/projects/MusekClub$ sudo npm install
npm ERR! path /home/vagrant/projects/MusekClub/node_modules/fsevents/build/Release/.deps/User/eshanker/Code/fsevents/lib
npm ERR! code ETXTBSY
npm ERR! errno -26
npm ERR! syscall rmdir
npm ERR! ETXTBSY: text file is busy, rmdir '/home/vagrant/projects/MusekClub/node_modules/fsevents/build/Release/.deps/Users/eshanker/Code/fsevents/lib'

npm ERR! A complete log of this run can be found in:
npm ERR!    /home/vagrant/.npm/_logs/2017-08-09T12_45_58_590Z-debug.log

我从默认的laravel 5.4 package.json文件中删除了标准依赖项。然后,我逐个安装每个依赖项。我发现只有在安装"laravel-mix": "^1.0"依赖项时才会出现我的问题。


1
我也遇到了这个模块的同样问题。 - Ben Liyanage
你是否也碰巧在使用 Vagrant? - curtiplas
是的。我能够解决这个问题,方法是移除 --no-bin-links。我使用管理员权限运行我的 Vagrant 虚拟机,我认为这也可能是必要的组件。 - Ben Liyanage
3个回答

6
我通过放弃npm并使用yarn解决了我的问题。看起来能够克服fsevents模块,因为它被视为可选依赖项。根据我所研究的信息,在Linux上似乎不支持fsevents。
vagrant@vagrant-ubuntu-trusty-64:~/projects/MusekClub$ sudo yarn install
yarn install v0.27.5
    Resolving packages...
    Fetching packages...
warning fsevents@1.1.2: The platform "linux" is incompatible with this module.
info "fsevents@1.1.2" is an optional dependency and failed compatibility check.
Excluding it from installation.
    Linking dependencies...
    Building fresh packages...
Done in 67.15s.

2

npm install --no-optional 对我有所帮助,但这只是回避问题。


--no-optional参数将防止安装可选依赖项。 - mruanova

1
通过使用vagrant,我能够解决这个问题,方法是删除--node-bin-links并以管理员身份运行我的vagrant box。 我正在使用大致相同版本的node和npm。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接