はじめに
これまでWindows上でnode.js開発をしようと試みていた私ですが、node.jsのバイナリにおけるWindows版とLinux版の動作の違いによりどうしても解決できない問題が出てきてしまったので、思い切って仮想環境に開発環境を移そうと思い奮闘した記録です。
何が起こったのか
当初、express-vueを用いて開発を行っていたのですが、.vueファイル上で別の.vueファイルを参照したときに、
Cannot find module 'E:UsershogeDocumentsProgramfugaroutes/ ./components/header.vue'
とか、
Error: Could not find view file at header.vue
といった感じで怒られてしまいました。
もうこの時点で明らかにパスがおかしいですね。
nodeのバージョンを変えたり、npmのバージョンを変えたり、絶対パスにしてみたりしたのですが、何をしても治らず。
調べるとexpress-vueのissueにこんなものが。
https://github.com/express-vue/express-vue/issues/120
これはWindows特有の既知の問題らしく、これを解消したバージョンが10/27あたりに出ているとか。(これがnode v9かな?)
しかし、LTS版を使いたい私はいっそ開発環境を変えてしまおうと決意。
下準備
以下をダウンロード・インストール。
・VMware Workstation Player
https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/14_0
・CentOS 7
https://www.centos.org/download/
GUI環境が欲しいので私はDVD ISOにしました。
先にBIOS画面でVT-x/AMD-V機能を有効にしておきます。これをしておかないと仮想化できません。
仮想環境のセットアップ
VMwareを起動して、まずは仮想環境を作ります。
GUIの指示通りに進めばOK。仮想HDD容量は50GB固定にしました。
作成出来たら、仮想マシン設定で
- プロセッサ数→4
- メモリ→4096M
- CD-ROM→CentOSのISOを指定
と設定して起動。各自の環境に合わせて適宜設定してください。
CentOSのInstallerが起動するので、一番上の選択肢を選択。
CentOSのインストール
これもGUIに沿って進むだけ。
途中、ソフトウェアの選択で「最小限のインストール」を「サーバー(GUI使用)」に変えておきます。
rootパスワードとユーザーも適宜設定。
起動したら
まずはyum updateします。
$ sudo yum update -y
その後一回再起動しておくと安心。
VMwareの便利機能であるVMware Toolsは、オープンソース化して「open-vm-tools」となり、すでにインストールされているようです。時代は変わったんですね…
共有フォルダ設定
しかし、このopen-vm-toolsでは共有フォルダをホストOS側で設定すれば自動的に認識…とはいきません。
https://communities.vmware.com/people/gowatana/blog/2017/04/08/open-vm-tools-hgfs
ここを参考に、手動でマウントする必要があります。
Dropboxを入れる
私はソースコードをDropboxで管理しているのでその関係で必要となりました。
https://ywnb.net/p/201606/3025
こちらを参考に。
作業としては、~/binにdropbox.pyをダウンロードして、
$ ./dropbox.py start -i
を叩くだけです。わざわざ実行ファイルをダウンロードしてこなくても、このPythonスクリプト叩くだけで勝手に実行ファイルまでダウンロードしてきてくれます。
ログイン処理も自動的にブラウザが開いてメールアドレスとパスワードを入れるだけ。あら簡単。
デーモンを起動するときは
$ ./dropbox.py start
止めるときは
$ ./dropbox.py stop
状況確認は
$ ./dropbox.py status
です。
nvmでnode.jsをインストール
https://qiita.com/akippiko/items/3708016fc43da088021c
https://qiita.com/makeneko/items/66309713c4ebe0b46c47
こちらを参考にさせていただきました。
$ git clone git://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
$ nvm install 8.9.1
$ nvm alias default 8.9.1
$ echo "source ~/.nvm/nvm.sh" >> ~/.bashrc
これで動作確認。
$ node -v
v8.9.1
$ npm -v
5.5.1
おわりに
パス問題に振り回されて一日無駄にしました。最初からLinux使っとけばよかったと思う今日この頃です。いつになったらプロダクト開発できるんだろうか。