みなさん、おはこんばんにちはでス。大変ご無沙汰しております。そういえば、sails.jsがv0.11.0になりましたね。手元のwin環境でアップデートに失敗したので解決方法と合わせてメモを投稿します。
内容
今回は、windowsの環境でアップデートしようとしたら失敗したという話です。Macの方はブラウザバック で。エラー自体はちゃんとメモしていなかったので詳細が書けないのですが、
- MSB4198 というエラー番号
- directoryname でディレクトリ名関連のエラー
- つまり、対象ファイルのパスが長すぎてダメ
ということでした。v0.10.0のインストールが成功している環境ゆえ、そのまま v0.11.0 も
npm update sails
でアップデートできると思ったのですが、上記のエラーが発生したのです。
解決方法
github のnode.js/npm周辺のディスカッションをいくつか見たのですが
開発サイドの言い分
- それ悪いのWindowsだから
- node.js/npm で対応しないんでごめんね
- チケット閉じるね
困っている人の言い分
- ずっと問題発生しているのにまだ解決しないの?
- ナントカしてよ
- チケット再度Openしてよ
という大変不毛な議論が繰り返されていました。本当に不毛ですね
結局、今回のバージョンで依存関係に追加されたらしい sails-hook-sockets
を先にインストールし、そのあとに、sailsをインストールすることで回避できました。
npm install sails-hook-sockets
npm update sails
手元の環境では sails-hook-sockets のビルド時のパスがwindowsの256文字制限に引っかかっていたのが原因でした。もし、同じ問題で困ったときに参考になればと書いた次第です。最近はMacの人が多いからあまり役に立たないかもしれませんが。
参考
すぐ sucks
言う人達のやり取り
- Node's nested node_modules approach is basically incompatible with Windows · Issue #6960 · joyent/node - https://goo.gl/VFCcXx
- Too many dependencies break the Windows file system · Issue #3697 · npm/npm - https://goo.gl/2q2nGL
- Install error with npm on Windows 7 x64 · Issue #57 · node-xmpp/node-expat - https://goo.gl/BbEHqC