× 無料のユーザー登録をすると学習状況を管理することができるようになります

Node.js入門 (全16回)

大量のアクセスを高速にさばくことができるNode.jsについて、その基本的な使い方を学んでいきます。

このレッスンでは Node.js 0.10.24 / npm 1.3.21 を使用しています。

#10 ejsを使ってページを表示してみよう
2017年4月7日

Chromeで今回のプログラムを実行するとnが2ずつ増えてしまう場合があります。これはChromeがリクエストのたびに/favicon.icoをダウンロードしようとするためです(仕様、もしくはバグかと思われます)。

実際にどんなリクエストが送られているかは、

server.on('request',function(req,res){
  console.log(req.url);
  n++;
  ...

としてあげれば、その様子がわかります。

また動画のように1ずつ増やしたい場合は、

server.on('request',function(req,res){
  console.log(req.url);
  if (req.url === '/favicon.ico') {
     return;
  }
  n++;
  ...

としてあげれば良いでしょう。

#13 投稿されたデータを表示しよう
2017年6月18日

現在のバージョンの Node.js では、レッスンの通りにコードを記述すると POST データの最後に「null」という文字列がついてしまいます。

これは、レッスン収録時以降のいずれかのバージョンから readable イベントの終了時に null が返されるようになり、それを文字列として結合してしまっているために発生しています。

回避策として server,js の 20 行目にある、

        req.on("readable", function() {
            req.data += req.read();
        });

のコードを以下のように書き直してください。

        // readable でなく data
        req.on("data", function(chunk) {
            // コールバック関数の引数を結合していく
            req.data += chunk;
        });
#14 MongoDBに接続してみよう
2016年2月14日
現在の MongoDB の初期設定では「{ [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' }」というエラーが出て接続に失敗してしまいます。このエラーが出た場合は、
"mongodb://"+settings.host+"/"+settings.db
の部分を、
"mongodb://localhost/"+settings.db
に変更して試してみてください。

もしくは /etc/mongod.conf 内にある bindIp: 127.0.0.1 の行をコメントアウトして MongoDB を再起動するという方法もあります。