豆腐とコンソメ

豆腐とコンソメ

もろもろのプログラム勉強記録

BoW環境でnpm(5.3.0)がエラーになる(未解決)

解決の見通しが立っていない記事です。

Windows10かBash on Ubuntu on Windows(Bow)でBashを使えるようになりました!

MacでもWindowsでも、似たような操作で作業できるっていいですよね!

qiita.com

自宅のPCはWindows8.1でWindows10の無料アップデートをしなくって最近後悔してます。

それでなんですが、まったく問題なく使えているかというと、ちょこちょこ問題がでています。

直近では、BoW環境でnode.jsのパッケージ管理マネジャー「npm」がエラーになってしまって、困ってます。

どなたか、うまくいく方がいればコメントをいただけると幸いです。

実行環境

  • Windows10のWindows on Bashを使用

バージョン

tohu@9141-063578:~/git/node/sample_basic$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

node.jsとnpmのバージョン

tohu@9141-063578:~/git/node/sample_basic$ npm -v
5.3.0
tohu@9141-063578:~/git/node/sample_basic$ node -v
v8.5.0

事象

以下のように、npmでなにかしらインストールを行おうとすると、エラーになっちゃいます。

試しにnpmでexpressをインストール

tohu@9141-063578:~/git/node/sample_basic$ npm install expresss
Unhandled rejection Error: ENOENT: no such file or directory, chmod '/mnt/c/Users/home/tohu/.npm/_cacache/content-v2/sha512/e7/26/497b29c02da80908b90563a758d58b73f084a698ee4d9b01652c3c74ae38bef8b6bfa92ee2f7f1bd88aa2e5b690ab8b0f8735e32703ef2e4d50990dfb5c4'

npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

npm ERR! A complete log of this run can be found in:
npm ERR!     /mnt/c/Users/home/tohu/.npm/_logs/2017-09-13T08_53_31_272Z-debug.log

「no such file or directory」といわれているディレクトリを見ても、ちゃんとファイルがいたりするので謎です。

ためしに、nodebrewでnode.jsのバージョンを「v7.6.0」にかえて、npmのバージョンが「4.1.2」だとうまくいったりするので、npmに原因があるのでしょうか。

nodeのバージョン一覧

tohu@9141-063578:~/git/node/sample_basic$ nodebrew list
v7.6.0
v8.5.0

v7.6.0を有効にする

tohu@9141-063578:~/git/node/sample_basic$ nodebrew use v7.6.0
use v7.6.0

node.jsとnpmのバージョン

tohu@9141-063578:~/git/node/sample_basic$ node -v
v7.6.0
tohu@9141-063578:~/git/node/sample_basic$ npm -v
4.1.2
tohu@9141-063578:~/git/node/sample_basic$

追記(2017/9/19) まだだめ

ちょこちょことリリースが来てるみたいなので、アップデートした。

リリースノートを見ると、「npm is not working」がfixされたよ!とか書いてあるので、期待したんだ。

が、結論をいえば事象は相変わらずだった。

msdn.microsoft.com

アップデート

$ sudo apt-get update
$ sudo apt-get upgrade

updateがやけに遅かったので、終わった後に、リポジトリを日本に変更した。

※以下の記事を参考にさせてていただきました。
Bash on Ubuntu on Windowsのapt-get(apt)を高速化する - Engineer's Notebook

バージョンを確認

tohu@9141-063578:~/git/node/sample_basic$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

バージョンが上がっているのか、よくわからず。。。

githubにも同じような質問があるのだけれども、リリースノート分の修正が反映されているって、どうやって判断すればいいのかしら。

github.com

※ちなみにWindowsそのもののバージョン f:id:konoemario:20170919185749p:plain:w500