【windows + vagrant】npm で errno -26
忙しい人向け
npm i -D --no-bin-links --no-optional
問題
vagrant上でnodeパッケージを使用すべくnpm install したらエラー。
エラー1 errno -71
npm i -D webpack ... npm ERR! code EPROTO npm ERR! errno -71 npm ERR! syscall symlink ...
シンボリックリンクが使用できないよ!ってことみたいです。
windows + vagrant でよく発生する問題のようです。
対処
--no-bin-links
オプションによってシンボリックの作成を回避します。
エラー2 errno -26
本題。
npm i -D --no-bin-links webpack ... npm ERR! code ETXTBSY npm ERR! errno -26 npm ERR! syscall rmdir npm ERR! ETXTBSY: text file is busy, rmdir '/vagrant/moge/node_modules/fsevents/build/Release/.deps/Users/eshanker/Code/fsevents/lib' ...
操作中のファイルがあるよってことらしいんですけど、そもそもそんなディレクトリがない。rmdir しても変わりなし。
対処
--no-optional
今回の場合、どうも fsevents が悪さしているらしいです。
fsevents は Mac でしか使用できないライブラリで、これをインストールしようとしてコケている模様。
環境によって依存するライブラリ(optionalDependencies)のインストールを回避するため、この引数を指定しています。
備考
err -26 については -g でグローバルインストールするときには出てこなかったりでよく分かっていない部分が多いです。
npm側としてはcentosインストールしたつもりだったのになんでwindowsと共有しとんのや!って感じなのでしょうか・・・
今のところ問題なく動いているので、ひとまずこれでおわり。
まとめ
npm i -D --no-bin-links --no-optional
# 参考
sqlazure.jp
qiita.com
qiita.com
qiita.com
docs.npmjs.com