windowsのローカル環境を整える話(dockerだけではダメだった話)

未分類


windowsでもmacでもdockerを使うから、dockerさえ動けば大丈夫やろ。

って思っていた時期が私にもありました。

dockerが動いてもgit周りがあり、git周りを整えてcommitlintとhusky周りを整えたりすると、ローカルでnodeのバージョン管理等する必要が結局必要になります。

またgitの通信周りはローカル環境依存なのでローカルでは

  • gitの設定
  • nodeのバージョン周りの設定

は永久に付きまとう事が分かりました。

そこでmacとwindows問題が出てきます。
僕は現在windowsでがんばっているのですが、正直開発macの方がいいかなってなってきました。
原因は下記

commitlintとprettierとsoucetreeで困るの巻

gitとcommitlintを使う場合ローカル環境のnodeに依存するので、ローカル環境を整える必要があります。

バージョンの確認が必要な項目

  • git
  • node
  • npm or yarn

となり、とくにnodeのバージョンは重要です。
nvmやn等のバージョン管理ソフトを使ってnodeを柔軟に切り替えられるようにすると幸せになります。

npmとyarn

npmとyarnですが両方ともpackage.jsonを元にnode_moduleを管理するツールになります。
一時yarnが主流でしたが、現在はnpmが主流になりつつあるようです。

両方ともバージョンロックをする。yarn.lock(yarnの場合)やpackage-lock.json(npmの場合)を吐き出すので、現状の動作環境でlockファイルがあると思いますので、対象のパッケージ管理ソフトでinstallしちゃいましょう

今回発生したエラー①

下記のようなエラーが発生しました。
ubuntuの基本フォルダがネットワークドライブになっているので、commitlint等のシェルが起動できないみたいです。

※UNC pathsはネットワークのパスを指しています。

CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.

との事ですのでubuntu上でマウントされているC配下でインストールすれば大丈夫です。

/mnt/c/

今回発生したエラー②

なぜかwindowsのubuntuでnpm installを行うとnode_module配下のbinファイル正しくインストールされない事例が発生しました。

ファイルが生成される物の0キロで生成されました。

→解決案に続く

エラーの文字化けする

windowsで言語設定でUnicode UTF-8を設定しないせいで、そもそものエラー内容が文字化けして正しく表示されない事例がありました。

解決案windows powershellで環境を整える

ubuntuでnpm (yarn) installがうまくいかないのでpower shellならどうよって事でローカル環境の整備はwindow power shellで行う事にしました。
power shellでnpm installを行うと、下記のように.cmdファイルや.ps1ファイルも一緒に出力されてます。
こちらを上記cmdで実行しているようです。
ですのでpower shellでnpm installを行わないと実行されないようです。

今回発生した問題③

下記のエラーが発生

standard_init_linux.go:211: exec user process caused "no such file or directory"

該当のシェルファイルやDockerファイルの改行コードをLFにすればOK

今回発生した問題④

/mnt/c/配下でubuntu上でパーミッションが変更できない問題が発生

/etc/wsl.confファイルを作成し下記を記載し再起動

[automount]
enabled = true
root = /mnt/
options = "metadata,umask=22,fmask=11"
mountFsTab = true

参考
https://qiita.com/cabbage_lettuce/items/acecfaf270b564d8c5aa

その他の問題

docker-compose.ymlファイルで環境変数を見にいく事があるのですが、
docker-compose.ymlファイルでwindowsのubuntuの場合シンボリックリンクで
/mnt/c/~
配下に飛ばす事があります。その参照設定のせいで、macで動くものがwindowsで動かない場合があったりします。

今回の教訓

nodeでインストールした場合、node_module配下にパッケージファイルが入り、
実行ファイルはnode_module/bin/配下に入るので、インストール後の動作がおかしい場合ファイルサイズの確認が必要。

また、ubuntuでインストールがおかしい場合、power shellでのインストールも検討