一向不喜歡追求剛剛新鮮出爐的事物的我,終於在node js出來一年後開始邁出腳步。
廢話少說,先把環境給配置好。google "mac node",出來幾條結果,提供的方法基本一樣,遂開始實踐之。附google後的安裝步驟:
1、安裝xcode、git;
2、使用git將node源碼拉到本地 git://github.com/ry/node.git
3、./configure
4、make
5、make install
還好之前有裝過xcode、git,要不然光下載安裝個xcode,今天晚上的時間完全報銷(托網路不給力的福)。有了這兩個玩意,安裝應該輕鬆搞定。然而卻出來幾個問題,首先./configure的時候,有幾個東西沒有: openssl -> not found, library -> not found, fdatasync(2) with c++ -> no。然後make的時候悲催的報錯了:build failed: -> task failed(err #1):...。
之後,我又重複了好幾遍,都是沒有成功,開始懷疑是否是openssl, library rt缺失導致的,準備裝openssl神馬的,順便群裡面問了句,有朋友建議使用node 0.6.1,然後跑到github上,download了最新版本的源碼,重複google上的安裝步驟,'build' finished successfully, 'install' finished successfully,搞定!原來是版本問題,當然具體是版本內部的什麼問題,這裡先不深究了,helloworld先出來再說。
安裝成功後,將官網上的helloworld程式copy一份儲存為helloworld.js到node安裝目錄下,
var http = require('http');
http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8808, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8808');
運行node helloworld.js,就能在命令視窗中(控制台)下看到"Server running at http://127.0.0.1:8808"的資訊,在瀏覽器中輸入localhost:8808,頁面不能串連,悲催了,怎麼回事。跑到控制台下看,報了一個錯:The 'sys' module is now called 'util'. It should have a similar interface.貌似是要實現某個介面,可是不對啊,這可是官方提供的helloworld啊,還能出錯。腫麼回事?莫非又是版本問題?node -v之,版本為node-v0.6.2 pre,乖乖,0.6.2的最新版本,而我跑的是0.6.1的helloworld,出錯了。既然官網目前提供了0.6.1的文檔,還是先看看0.6.1吧。
好吧,又有重裝了。這次吸取教訓,從官網上把0.6.1版本駝下來,然後重複以上步驟,make install的時候又出錯了,需要刪除剛才安裝的0.6.2 pre版本,因為它紮用了usr/local/include/node目錄,其下的config.h不能重寫。乖乖,沒有sudo,沒有許可權,那就sudo拿到管理員權限,重新sudo make install,安裝成功了。
繼續跑node helloworld.js,console正常,並能訪問localhost:8808,OK,終於搞定。也算一波三折。
留心一下,如果你的程式中有代碼錯誤,控制台還是會先列印出console資訊,然後再給你報出錯誤資訊,比如使用0.6.2 pre版本報的那個錯The 'sys' module is now called 'util'. It should have a similar interface,再比如你把res.writeHead攜程rs.writeHead。