RSS

カテゴリー別アーカイブ: node.js

Node.js Event Loop とは

Node.js は、 Event Loop というループ内で実行されます。これはブラウザの JavaScript が DOM からのイベントを処理するメカニズムを継承したものである。

Node.js Event Loop

(図をクリックすると拡大できます)

各フェーズの概要は次の通りです。

  • timers: setTimeout() と setInterval()により設定されたコールバックを実行する。
  • I/O callbacks: ほとんど全部のコールバックはここで実行される。例外はタイマ関連とsetImmidaite()関連である。
  • idle, prepare: 内部的に利用される。
  • poll: 新たな I/O イベントを取り出す。
  • checksetImmediate() はここでコールバックと呼び出しを行う。
  • close callbacks:  socket.on('close', ...)などはここで行う。

詳しくは Node.js のイベントループを理解する を参照。

 

 

広告
 
コメントする

投稿者: : 2017/11/10 投稿先 JavaScript, node.js

 

Ubuntu に最新のNode.jsをインストールしてみた。

Qiita の下記投稿「Ubuntuに最新のNode.jsを難なくインストールする」を参考にやってみました。環境は Ubuntu 16.04LTS です。

https://qiita.com/seibe/items/36cef7df85fe2cefa3ea

この投稿で最初の手順

sudo apt-get install -y nodejs npm

は古いNode.jsがすでに入っていたので省略しました。よって「n package を導入」からです。

sudo npm cache clean
sudo npm install n -g

これは問題なし。次の手順「最後に n package を使って node をインストール」です。

sudo n stable
sudo ln -sf /usr/local/bin/node /usr/bin/node

ここで、n stable は安定版(この時点では8.9.0LTS)になるかと思っていましたが、9.0.0がインストールされました。n コマンドで具体的なバージョン番号を指定したほうがよさそうです。(自分は9.0.0でもかまわなったので、やってませんが)

ln -sf /usr/local/bin/node /usr/bin/node ですが、Node.js のインストール先は、/usr/local/bin/node にはならず、自分の場合は /usr/local/n/versions/node/9.0.0 になっていました。

よって、このコマンドをそのまま実行しても機能しませんでした。

さらに、nodejs というのが node コマンドの別名になっていていました。(自分の環境だけかもしれませんが)

最後の古いNode.js を削除する手順を行わないと、古いバージョンと新しいバージョンがバッティングするので必ず行ったほうがよさそうです。

sudo apt-get purge -y nodejs npm

この後に、3つのシンボリックリンク /usr/bin/node, /usr/local/bin/node, /usr/bin/nodejs を

/usr/local/n/versions/node/9.0.0/bin/node

に変更しました。これでどれが使われても安心です。

user@ubuntu:~$ node -v
v9.0.0

ところで、SSL Error: CERT UNTRUSTED というエラーが出ることがあります。次の対処法を行ったら回避できました。

npm install で SSL Error になった時の対処法。
https://blog.yug1224.com/archives/563d9b67bf652a600632d01e

具体的には npm config set ca “” を行いました。

 

終わり

 

 

 
コメントする

投稿者: : 2017/11/08 投稿先 node.js

 

node.jsでインストールしたモジュールが見つからないとき

node.jsでインストールしたモジュールが見つからないときは、環境変数NODE_PATHが設定されているか確認します。

エラーの例
module.js:340
throw err;
^
Error: Cannot find module ‘async’
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)

 
コメントする

投稿者: : 2014/03/02 投稿先 node.js

 

タグ:

Node.js Hello world!

(function(){ 
  var http, server, sys; 
  sys = require('sys'); 
  http = require('http'); 
  server = http.createServer(function(request, response) { 
    response.writeHead(200, { 
      'Content-Type': 'text/plain' 
    }); 
    response.write('Hello World!!\n'); 
    return response.end(); 
  }).listen(8124); 
  sys.log('Server running at http://127.0.0.1:8124/'); 
})();
 
コメントする

投稿者: : 2012/06/19 投稿先 node.js

 

タグ: