Help us understand the problem. What is going on with this article?

node.js のバージョン管理ツール ndenv を試した

More than 3 years have passed since last update.

Ubuntu にバンドルされている Node.js で利用すると、バージョンを自由に選べない。Googleで調べたらndenv という pyenv や rbenv に良く似たツールがあったので使ってみた。

参照サイト GitHub riywo/ndenv https://github.com/riywo/ndenv

作業ディレクトリ

一般ユーザーのホームディレクトリにインストールします。 いろいろ共存です。

tkr@tkr02:~$ ls -la
合計 64
drwxr-xr-x  9 tkr  tkr  4096  1月  2 11:17 .
drwxr-xr-x  3 root root 4096  1月  2 07:58 ..
-rw-------  1 tkr  tkr  1903  1月  2 18:15 .bash_history
-rw-r--r--  1 tkr  tkr   220  1月  2 07:58 .bash_logout
-rw-rw-r--  1 tkr  tkr   152  1月  2 08:32 .bash_profile
-rw-r--r--  1 tkr  tkr  3637  1月  2 07:58 .bashrc
drwx------  3 tkr  tkr  4096  1月  2 08:23 .cache
drwx------  2 tkr  tkr  4096  1月  2 09:15 .emacs.d
drwxrwxr-x  3 tkr  tkr  4096  1月  2 09:08 .gem
-rw-r--r--  1 tkr  tkr   675  1月  2 07:58 .profile
drwxrwxr-x 12 tkr  tkr  4096  1月  2 08:30 .pyenv
drwxrwxr-x 12 tkr  tkr  4096  1月  2 08:43 .rbenv
-rw-------  1 tkr  tkr   174  1月  2 08:47 .softlayer
drwxr-xr-x  2 tkr  tkr  4096  1月  2 08:02 .ssh
drwxr-xr-x  2 root root 4096  1月  2 11:16 .vim
-rw-------  1 tkr  tkr  2297  1月  2 11:17 .viminfo

GitHub からツールをクローン

tkr@tkr02:~$ git clone https://github.com/riywo/ndenv ~/.ndenv
Cloning into '/home/tkr/.ndenv'...
remote: Counting objects: 63, done.
remote: Total 63 (delta 0), reused 0 (delta 0), pack-reused 63
Unpacking objects: 100% (63/63), done.
Checking connectivity... done.

ログインシェルに設定を追加

tkr@tkr02:~$ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
tkr@tkr02:~$ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
tkr@tkr02:~$ exec $SHELL -l
tkr@tkr02:~$ ndenv -v
ndenv 0.4.0-4-ga339097

GitHub から node-build をクローン

tkr@tkr02:~$ git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
Cloning into '/home/tkr/.ndenv/plugins/node-build'...
remote: Counting objects: 68, done.
remote: Total 68 (delta 0), reused 0 (delta 0), pack-reused 68
Unpacking objects: 100% (68/68), done.
Checking connectivity... done.

導入可能なバージョンをリストする

tkr@tkr02:~$ ndenv install -l
Available versions:
  v0.1.14
  v0.1.15
中略
  v0.12.4
  v0.12.5
  v0.12.6
  v0.12.7
  v0.12.8
  v0.12.9
中略
  iojs-v3.2.0
  iojs-v3.3.0
  iojs-v3.3.1
中略

バージョンを指定してインストール

最後におまじないの rehash を忘れない様にとね。

tkr@tkr02:~$ ndenv install v0.12.9
Downloading node-v0.12.9-linux-x64.tar.gz...
-> https://nodejs.org/dist/v0.12.9/node-v0.12.9-linux-x64.tar.gz
Installing node-v0.12.9-linux-x64...
Installed node-v0.12.9-linux-x64 to /home/tkr/.ndenv/versions/v0.12.9
tkr@tkr02:~$ ndenv rehash

導入されているか確認

tkr@tkr02:~$ ndenv versions
  v0.12.9
tkr@tkr02:~$ ndenv global v0.12.9
tkr@tkr02:~$ node -v
v0.12.9 

テストぺージ作成

FWの設定追加

OSファイアウォールに TCP/8080 を開く様に設定

tkr@tkr02:~$ sudo -s
root@tkr02:~# ufw allow 8080
ルールを追加しました
ルールを追加しました (v6)
root@tkr02:~# ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       10.0.0.0/8
80                         ALLOW       Anywhere
1883                       ALLOW       Anywhere
8080                       ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
1883 (v6)                  ALLOW       Anywhere (v6)
8080 (v6)                  ALLOW       Anywhere (v6)

httpサーバーのコード

HTTPサーバーの最も簡単なコードを作成します。

server.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8080, '0.0.0.0');

node.js上で httpサーバーの実行

上記で作ったコードをnodeコマンドの引数に与えて実行します。簡単にHTTPサーバーができてるので、ちょっとビックリ!

tkr@tkr02:~$ node server.js 

ブラウザからの確認

IPアドレスかドメイン名でアクセスして確認します。 Hello World が表示されていれば成功です。

firefox.png

npmも使ってみる

tkr@tkr02:~$ npm install mqtt --save

> utf-8-validate@1.2.1 install /home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild

make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate/build' に入ります
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate/build' から出ます

> bufferutil@1.2.1 install /home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild

make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil/build' に入ります
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil/build' から出ます
mqtt@1.6.3 node_modules/mqtt
├── inherits@2.0.1
├── reinterval@1.0.2
├── xtend@4.0.1
├── minimist@1.2.0
├── commist@1.0.0 (leven@1.0.2)
├── readable-stream@1.0.33 (isarray@0.0.1, string_decoder@0.10.31, core-util-is@1.0.2)
├── end-of-stream@1.1.0 (once@1.3.3)
├── mqtt-packet@3.4.4 (bl@0.9.4)
├── help-me@0.1.0 (pump@1.0.1)
├── mqtt-connection@2.1.1 (through2@0.6.5, reduplexer@1.1.0)
├── concat-stream@1.5.1 (typedarray@0.0.6, readable-stream@2.0.5)
└── websocket-stream@2.3.0 (through2@2.0.0, duplexify@3.4.2, ws@0.8.1)
MahoTakara
Docker/Kuberneresの学習本を書きました。15ステップあるのですが、1ステップ完結型なので好きな所から学習できます。https://amzn.to/2mgCRya
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした