しかし ndenv
の記事が多い。 ndenv
には別途 node-build
のインストールが必要という記述もみられてなんかスマートじゃない。
さらに ndenv
は時代遅れという記述もある。
[Deprecated] nodenv is better alternative
Please consider to use nodenv. ndenv repository is not maintained actively.
最近はどうやら nodenv
というものがあるらしい。node-build
は自動で入るのかな。とりあえずやってみた記録を残す。
参考:
nodenv
のインストールHomebrew経由でnodenvをインストールします。
$brew install nodenv
正常にnodenvがインストールされたか確認します。
$nodenv -v nodenv 1.1.2 # ok
とりあえずこれだけで入るには入るようだ。やってみる。
$ brew install nodenv
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
gnutls libtasn1
==> Installing dependencies for nodenv: node-build
==> Installing nodenv dependency: node-build
==> Downloading https://github.com/nodenv/node-build/archive/v4.7.0.tar.gz
==> Downloading from https://codeload.github.com/nodenv/node-build/tar.gz/v4.7.0
######################################################################## 100.0%
==> ./install.sh
🍺 /Applications/Homebrew/Cellar/node-build/4.7.0: 600 files, 684.2KB, built in 10 seconds
==> Installing nodenv
==> Downloading https://github.com/nodenv/nodenv/archive/v1.3.1.tar.gz
==> Downloading from https://codeload.github.com/nodenv/nodenv/tar.gz/v1.3.1
######################################################################## 100.0%
==> src/configure
==> make -C src
🍺 /Applications/Homebrew/Cellar/nodenv/1.3.1: 34 files, 64.9KB, built in 8 seconds
$ nodenv -v
nodenv 1.3.1
うむ。入った。そして node-build
も自動的に入っているみたいだ。
nodenvの初期化
nodenv init
を打つと以下のようなメッセージが表示されます。$ nodenv init # Load nodenv automatically by appending # the following to ~/.bash_profile: eval "$(nodenv init -)"
このメッセージは
~/.bash_profile
にeval "$(nodenv init -)"
を追加してね、という意味です。 (最初、改行で文章が終わっているのかと思って読んでたらよく意味がわかりませんでした…)参考:
nodenv init
won’t add shims to$PATH
· Issue #84 · nodenv/nodenv · GitHub- FAQ · nodenv/nodenv Wiki · GitHub
vimや任意のエディタ、
echo
コマンドなりで~/.bash_profile
を修正します。$ echo 'eval "$(nodenv init -)"' >> ~/.bash_profile # ~/.bash_profileにeval "$(nodenv init -)"を追加 $ source ~/.bash_profile # リロード
なるほどなるほど、と .bash_profile を確認したら、 rbenv
や pyenv
にこんな記述があったのを思い出した。
#rbenv command
export RBENV_ROOT=/Applications/Homebrew/opt/Ruby
eval "$(rbenv init -)"
#pyenv command
export PYENV_ROOT=/Applications/Homebrew/opt/pyenv/Python
eval "$(pyenv init -)"
そういえば ***_ROOT
変数を設定してルートディレクトリを /Applications/Homebrew 内部にまとめていた。
nodenv
にそういう機能はあるのかな。
Environment variables
You can affect how nodenv operates with the following settings:
name default description NODENV_VERSION
Specifies the Node version to be used. Also see nodenv shell
NODENV_ROOT
~/.nodenv
Defines the directory under which Node versions and shims reside. Also see nodenv root
NODENV_DEBUG
Outputs debug information. Also as: nodenv --debug <subcommand>
NODENV_HOOK_PATH
see wiki Colon-separated list of paths searched for nodenv hooks. NODENV_DIR
$PWD
Directory to start searching for .node-version
files.
あった。 /Applications/Homebrew 内部にまとめます。
#rbenv command
export RBENV_ROOT=/Applications/Homebrew/opt/Ruby
eval "$(rbenv init -)"
#pyenv command
export PYENV_ROOT=/Applications/Homebrew/opt/pyenv/Python
eval "$(pyenv init -)"
#nodenv command
export NODENV_ROOT=/Applications/Homebrew/opt/nodenv/Node
eval "$(nodenv init -)"
Node.jsのバージョンを選択してインストール
念の為、最新版ではなく推奨版であるNode.jsの10.13.0をグローバルにインストールします。
$nodenv install 10.13.0 $nodenv global 10.13.0 $nodenv versions # nodenvに10.13.0が追加されたか確認 system * 10.13.0 (set by /Users/yoshie/.nodenv/version)
$ nodenv install 12.14.0
Downloading node-v12.14.0-darwin-x64.tar.gz...
-> https://nodejs.org/dist/v12.14.0/node-v12.14.0-darwin-x64.tar.gz
Installing node-v12.14.0-darwin-x64...
Installed node-v12.14.0-darwin-x64 to /Applications/Homebrew/opt/nodenv/Node/versions/12.14.0
$ cd Project/Node
$ nodenv versions
12.14.0
$ nodenv local 12.14.0
$ node -v
v12.14.0
Ver.12.14.0 をインストールして、 Node.js を実行するディレクトリに移動して、ローカルのバージョンを設定しています。
Hello world (コンソール版)
まずは、おきまりの Hello world から。
$
は一般ユーザの、#
は特権ユーザのプロンプトを示します。
- sample1.js
console.log("Hello world!");
- Console
$ node sample1.js Hello world!
やってみる。
$ vimr sample1.js
lev:Node leico_studio$ node sample1.js
Hello World!
問題なし。
Hello World (Web版)
- Web サーバとして動作させる場合のサンプルがこちら。
- sample2.js
var http = require('http'); var server = http.createServer(function(req, res) { res.write("Hello world!\n"); res.end(); }).listen(8080);
まず、サーバを起動する。
- Console
$ node sample2.js
別の端末から、Node.js を呼び出す。
少しモダンに書く練習をしてみる。
const http = require('http');
const server = http.createServer((req, res) => {
res.write('Hello World!');
res.end();
}).listen(8080);
実行して、web ブラウザからアクセスしたら Hello World! が返ってくるはず。
$ node sample2.js
http://localhost:8080/ にアクセスしてみる。
サーバはターミナルで Ctrl - C
で終了できた。