2013年3月8日金曜日

Node.jsを使ってみる

Node.jsを使ってみた。Node.jsはサーバーサイドの処理をJavascriptで書ける。あと非同期でリクエストが処理できる。これぐらいの知識しかないのでNodeビギナーズブックを一通りやってみることにした。

まずはインストール。ブックにはgitのリポジトリからソースコードをとってきてコンパイルするように書いてあるが、訳あってgitが使えないので公式サイトにあるINSTALLボタンよりインストール。Mac OS Xなのでインストールボタンを押すとnode-v0.8.22.pkgがダウンロードされるので、このパッケージをインストールする。
nodeは/usr/local/bin/nodeにインストールされた。

インストールされているか確認。

Stardust:~ user$ node -v
v0.8.22


まずはいつもの通りにHelloWorldから。コードはブックをみてください。

Stardust:Node user$ node helloworld.js 
Hello World


とくに問題なし。
今度はサーバーサイドを実装してみる。ブラウザでみてみると。

ERROR

The requested URL could not be retrieved


netstatで確認してみても確かに8888ポートでListenになっているものがない。

Stardust:~ user$ netstat -a -p tcp -L
Current listen queue sizes (qlen/incqlen/maxqlen)
Listen         Local Address         
0/0/128        *.ddi-tcp-1            
0/0/50         *.cslistener           
0/0/50         *.ndmp                 
0/0/50         *.9980                 
0/0/50         localhost.intu-ec-svcd 
0/0/100        *.61307                
0/0/128        *.49181                
0/0/128        *.49181                
0/0/128        localhost.ipp          
0/0/128        localhost.ipp          


と思ったが、/etc/servicesでみてみると

ddi-tcp-1       8888/tcp     # NewsEDGE server TCP (TCP 1)


となっているので、Listenはしているようだ。
ということは、Proxy設定かも。localhostをproxyサーバに投げているのかもしれない。
「システム環境設定」ー「ネットワーク」ー「詳細...」ー「プロキシ」を確認してみるとlocalhostが例外に設定されていなかった。localhostもプロキシに投げないように設定する。

再度ブラウザでアクセス。
出た! Hello World!


次はモジュール化を行う。index.jsとserver.jsに分けて実行してみる。

エラー発生。スタックトレースが表示される。


/Users/user/Documents/Aptana Studio 3 Workspace/Node/index.js:3
server.start();
^
ReferenceError: server is not defined
    at Object. (/Users/user/Documents/Aptana Studio 3 Workspace/Node/index.js:3:1)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)
    at process.startup.processNextTick.process._tickCallback (node.js:245:9)


serverって単語の単純なスペルミスだったが、Nodeってエラーのときこんなスタックトレースを吐くのね。javaっぽい。 これ長くなりそうので、続きは次回。

0 件のコメント:

コメントを投稿