本文將介紹在 Mac OS X 下安裝并開(kāi)始使用 Node.js ,這個(gè)過(guò)程大概需要 30 分鐘左右的時(shí)間,其中我們還將安裝 CouchDB,并實(shí)現(xiàn)基于 CouchDB 的 REST API。
本文假設(shè)你機(jī)器上已經(jīng)裝有Git,如果還沒(méi)有,請(qǐng)參考此文進(jìn)行安裝。
安裝 node.js 和 npm
最簡(jiǎn)單的方法是在 node.js 的官網(wǎng)上通過(guò) the nodejs download section 頁(yè)面并選擇 Mac 下的安裝程序,它將在你的機(jī)器上安裝 Node.js 和 npm (node package manager).
安裝成功后你就可以使用 node 和 npm 命令了。
安裝 CouchDB
因?yàn)楸疚男枰褂?CouchDB 來(lái)存儲(chǔ)對(duì)象,因此還需要安裝 CouchDB.
安裝 CouchDB 稍微麻煩一些,因?yàn)槲覀冃枰螺d源碼然后編譯I,在此之前需要先安裝 Homebrew ,請(qǐng)執(zhí)行以下命令:
git clone https://github.com/mxcl/homebrew.git cd homebrew/bin brew install autoconf automake libtool brew install couchdb
重要的提示:CouchDB 之前報(bào)出一個(gè)問(wèn)題可能會(huì)阻止你安裝,要修復(fù)這個(gè)問(wèn)題需要手工編輯 ~/couch/homebrew/Library/Formula/couchdb.rb 文件,編輯內(nèi)容如下:
代碼如下:require 'formula'
class Couchdb < Formula
url 'http://www.apache.org/dyn/closer.cgi?path=couchdb/source/1.1.1/apache-couchdb-1.1.1.tar.gz'
homepage "http://couchdb.apache.org/"
md5 'cd126219b9cb69a4c521abd6960807a6'
請(qǐng)注意需要將 url 中的 source 刪除,最終修改結(jié)果如下:
代碼如下:require 'formula'
class Couchdb < Formula
url 'http://www.apache.org/dyn/closer.cgi?path=couchdb/1.1.1/apache-couchdb-1.1.1.tar.gz'
homepage "http://couchdb.apache.org/"
md5 'cd126219b9cb69a4c521abd6960807a6'
如果安裝過(guò)程被掛起了,你需要 CTRL-C 終止并執(zhí)行下面命令重試:
代碼如下:./brew install -v couchdb
更多關(guān)于 Mac OS X 上安裝 CouchDB 的信息請(qǐng)閱讀 "Installing CouchDB on OSX".
一旦 CouchDB 編譯完成,我們可以手工執(zhí)行 ./couchdb 來(lái)啟動(dòng)它,你可以在瀏覽器中打開(kāi) http://127.0.0.1:5984/_utils 這個(gè)地址以驗(yàn)證 CouchDB 安裝是否成功。
下載教程
現(xiàn)在所需的軟件都已經(jīng)安裝完成,我們接下來(lái)繼續(xù) Node.js 的介紹實(shí)例。
首先我們使用 Git 來(lái)獲取實(shí)例源碼
git clone https://github.com/indexzero/nodejs-intro.git
創(chuàng)建 CouchDB 數(shù)據(jù)庫(kù)
在開(kāi)始教程之前我們需要?jiǎng)?chuàng)建一個(gè) CouchDB 數(shù)據(jù)庫(kù),先確保 CouchDB 已經(jīng)啟動(dòng),然后使用如下命令創(chuàng)建數(shù)據(jù)庫(kù):
$ curl -X PUT http://127.0.0.1:5984/pinpoint-dev10
{"ok":true}
你可以在瀏覽器中訪問(wèn) http://127.0.0.1:5984/_utils 就可以看到新創(chuàng)建的數(shù)據(jù)庫(kù)。
這里還有一個(gè)非常棒的 CouchDB 的指南。
開(kāi)始教程
node js 實(shí)例使用模塊化的方式構(gòu)建,lib 目錄包含很多模塊,而服務(wù)器腳本在 bin 目錄下。
例如,我們要啟動(dòng) CouchDB 教程,可以在 bin 目錄下執(zhí)行下面命令:
./server -t 02couchdb -s
其中 -t 參數(shù)允許你指定要執(zhí)行的 lib 目錄下的模塊,-s 參數(shù)用以設(shè)置我們剛建立的 pinpoint-dev 數(shù)據(jù)庫(kù)。
sys - util 變化
根據(jù) Node.js 的版本不同,你可能會(huì)看到如下的錯(cuò)誤或者是警告:
代碼如下:$ node -v
v0.7.7-pre
$ ./server -t 02couchdb -s
node.js:247
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: The "sys" module is now called "util".
at sys.js:1:69
at NativeModule.compile (node.js:572:5)
at Function.require (node.js:540:18)
at Function._load (module.js:297:25)
at Module.require (module.js:357:17)
at require (module.js:373:17)
at Object. (/home/ubuntu/nodejs-intro/bin/server:3:11)
at Module._compile (module.js:444:26)
at Object..js (module.js:462:10)
at Module.load (module.js:351:32)
為了避免這個(gè)問(wèn)題,你需要將所有調(diào)用 `require("sys")` 替換成 `require("util")`
Node v0.6.14 不會(huì)拋出錯(cuò)誤信息,但會(huì)提示警告:
代碼如下:$ node -v
v0.6.14
$ ./server -t 02couchdb -s
The "sys" module is now called "util". It should have a similar interface.
Pinpoint demo server listening for 02couchdb on http://127.0.0.1:8000
運(yùn)行教程
當(dāng)你運(yùn)行某個(gè)教程時(shí),會(huì)提示一些錯(cuò)誤:
代碼如下:$ ./server 02couchdb
The "sys" module is now called "util". It should have a similar interface.
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'optimist'
at Function._resolveFilename (module.js:332:11)
at Function._load (module.js:279:25)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at Object. (/Users/ddewaele/Projects/Node/nodejs-intro/bin/server:5:12)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Array.0 (module.js:479:10)
該教程包含很多依賴(lài),我們需要使用 npm 來(lái)下載這些依賴(lài)的包。
安裝 node 包
Node packages (dependencies) 可通過(guò) npm 命令來(lái)安裝,例如:
$ npm install optimist npm http GET https://registry.npmjs.org/optimist npm http 200 https://registry.npmjs.org/optimist npm http GET https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz npm http 200 https://registry.npmjs.org/optimist/-/optimist-0.2.8.tgz npm http GET https://registry.npmjs.org/wordwrap npm http 200 https://registry.npmjs.org/wordwrap npm http GET https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz npm http 200 https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz optimist@0.2.8 ../node_modules/optimist └── wordwrap@0.0.2
這些包將被安裝到 node_modules 文件夾中:
$ ls -l ../node_modules/ total 0 drwxr-xr-x 10 ddewaele staff 340 Apr 1 18:54 optimist
本文需要安裝如下的 node 包:
npm install winston npm install cradle npm install journey npm install optimist
運(yùn)行教程
進(jìn)入 bin 目錄,通過(guò)下面命令來(lái)運(yùn)行教程:
$ ./server -t 02couchdb -s The "sys" module is now called "util". It should have a similar interface. Pinpoint demo server listening for 02couchdb on http://127.0.0.1:8000
然后打開(kāi)瀏覽器訪問(wèn) http://127.0.0.1:8000/bookmarks ,將會(huì)看到如下的結(jié)果:
代碼如下:{"bookmarks":[]}
這表示服務(wù)已經(jīng)啟動(dòng)并運(yùn)行,為了在 CouchDB 中添加點(diǎn)測(cè)試數(shù)據(jù),我們可以使用 http-console 控制臺(tái)來(lái)訪問(wèn) CouchDB 的 REST 服務(wù)。
安裝 http-console
有一個(gè)非常棒的工具可以幫助你調(diào)試服務(wù),該工具名為 http-console ,你可使用 npm 來(lái)安裝:
sudo npm install -g http-console
然后就可以在命令行中執(zhí)行該工具,不幸的是當(dāng)我們執(zhí)行該命令時(shí)報(bào)錯(cuò)了:
$ http-console node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead. at Function. (module.js:378:11) at Object. (/usr/local/lib/node_modules/http-console/bin/http-console:6:8) at Module._compile (module.js:441:26) at Object..js (module.js:459:10) at Module.load (module.js:348:31) at Function._load (module.js:308:12) at Array.0 (module.js:479:10) at EventEmitter._tickCallback (node.js:192:40)
很麻煩,我們還需要手工編輯 /usr/local/lib/node_modules/http-console/bin/http-console 文件,然后刪除下面這一行:
代碼如下:require.paths.unshift(path.join(__dirname, '..', 'lib'));
現(xiàn)在 http-console 就可以啟動(dòng)了,無(wú)需任何參數(shù),它將連接到 http://localhost:8080 ,如果你需要指定服務(wù)器和端口,把它作為第一個(gè)參數(shù)傳遞給 http-console 即可。
請(qǐng)注意我們這里使用了 \json 命令用來(lái)設(shè)置正確的 content-type:
$ http-console http://127.0.0.1:8000 The "sys" module is now called "util". It should have a similar interface. > http-console 0.6.1 > Welcome, enter .help if you're lost. > Connecting to 127.0.0.1 on port 8000. http://127.0.0.1:8000/> \json http://127.0.0.1:8000/>
在 http-console 中,要執(zhí)行 GET 請(qǐng)求只需要輸入 GET /bookmarks 即可:
http://127.0.0.1:8000/> GET /bookmarks HTTP/1.1 200 OK Date: Sun, 01 Apr 2012 17:23:27 GMT Server: journey/0.4.0 Content-Type: application/json;charset=utf-8 Content-Length: 16 Connection: keep-alive { bookmarks: [] }
你也可以使用 JSON 的片段來(lái)執(zhí)行 POST 請(qǐng)求:
http://127.0.0.1:8000/> POST /bookmarks ... { "url": "http://nodejs.org" } HTTP/1.1 200 OK Date: Thu, 05 Apr 2012 11:45:55 GMT Server: journey/0.4.0 Content-Type: application/json;charset=utf-8 Content-Length: 91 Connection: keep-alive { bookmark: { _id: 'WD-G-1', resource: 'Bookmark', url: 'http://nodejs.org' } }
然后再次執(zhí)行 GET 請(qǐng)求,你就可以看到新插入的數(shù)據(jù)了:
http://127.0.0.1:8000/> GET /bookmarks HTTP/1.1 200 OK Date: Sun, 01 Apr 2012 17:23:27 GMT Server: journey/0.4.0 Content-Type: application/json;charset=utf-8 Content-Length: 16 Connection: keep-alive { bookmarks: [ { _rev: '1-cfced13a45a068e95daa04beff562360', _id: 'WD-G-1', resource: 'Bookmark', url: 'http://nodejs.org' } ] }
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com