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っぽい。
これ長くなりそうので、続きは次回。