標籤:android style class blog code java
關於nodejs中文站,眼下活躍度最好的知識站應該是http://www.cnodejs.org/ ,而http://cnodejs.org/則活躍度較低。Express.js是nodejs的一個MVC開發架構,而且支援jade等多種模板,是Node.js上最流行的Web開發架構。這幾天剛接觸PhoneGap,曾經也看了一些nodejs的基礎但苦於時間有限一直沒機會親自搭建一個nodejs環境,今天周末,部署了PhoneGap到Android,順便一同搭建了一下nodejs本地環境,自己的操作過程例如以下:
第1步:下載、安裝檔案
代開nodejs的官網http://www.nodejs.org/download/ 下載最新版本號碼,下載完畢之後,雙擊 node-v0.10.20-x86.msi,開始安裝nodejs,預設是安裝在C:\Program Files\nodejs檔案夾。安裝好後系統預設的環境變數path是C:\Documents and Settings\Administrator\Application Data\npm;能夠依據須要手動指向本地安裝資料夾,如:C:\Program Files\nodejs\node_modules\npm將通用檔案夾設定設為本地初始預設安裝資料夾一致。
第2步:安裝相關模組環境
開啟C:\Program Files\nodejs檔案夾你會發現裡面內建了Npm這個nodejs外掛程式的管理工具,直接用Npm安裝相關須要的相關模組就可以(其它有些系統可能須要單獨安裝NPMhttps://github.com/isaacs/npm,也可直接用Git工具下載git clone --recursive git://github.com/isaacs/npm.git下載完畢後,命令列首先定位到npm包所在檔案夾,輸入代碼node cli.js install npm -gf 進行安裝。)
系統開始菜單--程式--進入node.js command prompt 命令表單
鍵入命令:cd C:\Program Files\nodejs 就可以進入nodejs 安裝資料夾 C:\Program Files\nodejs
如今開始安裝相關模組環境
node模組的安裝分為全域模式和本地模式。普通情況下會以本地模式執行,包會被安裝到和你的應用代碼統計的本地node_modules檔案夾下。在全域模式下,Node包會被安裝到Node的預設安裝資料夾下的node_modules下。
第一種方法是鍵入命令:npm install express 預設安裝express的最新版本號碼。若在後面加版本號碼號可安裝指定版本號碼,如npm install [email protected] 斷行符號開始安裝express,安裝完畢後會在目前的目錄下的node_modules目錄下多出express相關的兩個目錄express和.bin。
還有一種全域安裝方式是鍵入命令:npm install express -g ,安裝完畢命令列會提示 npm info ok。參數-g的含義是代表安裝到全域環境裡面。假設沒有-g的話會安裝到當前node_modules目錄下(如無則建立node_modules目錄)。個人不建議剛開始學習的人使用這樣的將包安裝到全域環境中的做法,由於在js執行個體代碼中,直接通過require()的方式是沒有辦法調用全域安裝包的,報錯 throw err;Error: Cannot find module ‘express‘ ,此時能夠將node_modules整個目錄複寫一份到你的項目project下。全域的安裝是供命令列使用的,使用全域方式安裝後,使用者就能夠在命令列中直接執行該組件包支援的命令,優點是能夠提高程式的反覆利用程度,避免相同的內容存在多份副本。缺點是難以處理不同的版本號碼依賴。這裡的require()是node.js內建函數,用來引入其它模組以備代碼中調用模組的函數和變數,預設下node.js會在NODE_PATH和眼下js所在項目目錄下的node_modules目錄下去尋找模組。因此,假設是全域安裝,不複製系統安裝node_modules目錄到項目node_modules目錄下,還能夠選擇將環境變數的NODE_PATH設定為C:\Program Files\nodejs,設定完畢後再去專案檔夾執行命令node app.js就不會報錯了。express.js繼承自connect模組,所以若你的node_modules檔案夾下沒有connect模組也是不能執行的。
以上為本人的經驗總結。後來查閱文檔發現國外有更為具體的回覆:
援引Marek的問題Error: Cannot find module ‘express’的解答:
This problems seems to be quite popular among Windows users. It seems to occur after node has been reinstalled or updated or when hidden attribute has been removed from C:\Users\IMaster\AppData folder. It might be one of those things that can make you feel bad especially if you don’t wont to apply some quick hacks like: npm link express
Node returns error because is not able to find required module and that is why problem in most cases is actually easy to fix. First place to check would be require.paths. After typing it in node console I received:
Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
At the time of writing I am using v0.6.19 but you might see this or similar warning if you using newer version.
As stated you have 2 choices. You can install express (or another module) to local node_modules directory using npm install express or after installing module globally
npm install express -g
you can link it with your current project using
npm link express
Second and last option is to create or update NODE_PATH system variable pointing your node to the right place in the system. If you are Windows user use export command as shown below:
export NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"
Now you should update PATH variable as well
set PATH=%PATH%;%NODE_PATH%
Try to run your module now.
You should be fine.
安裝完畢Express後執行node app.js 瀏覽器輸入http://localhost:3000可預覽即表明express成功安裝。
這裡提示Express 500 Error: Cannot find module ‘jade‘ 說明jade模組沒有安裝,windows無須手動下載jade包,已整合(假設其它地方須要,可在此下載https://github.com/visionmedia/jade)。輸入npm install jade進行安裝就可以。
jade安裝完畢後
關於 Express.js 中文入門指引手冊能夠參考http://www.csser.com/board/4f77e6f996ca600f78000936
其它組件還有非常多,如mysql,能夠依據個人須要能夠選擇進行安裝。
預設情況下組件都是安裝在C:\Program Files\nodejs\node_modules目錄下,這也是nodejs相關組件的自己主動尋找路徑。
第3步:測試項目project
如今安裝了express組件,嘗試鍵入:express myapp 建立一個名為myapp的project,檔案夾下多了一個 myapp 檔案夾。
是否須要複製node_modules目錄到myapp以下由上述npm express安裝方式決定
在myapp下建立helloworld.js,代碼例如以下:
var http = require("http");http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();}).listen(8080);console.log(‘Server running at http://127.0.0.1:8080/‘);
進入node.js command prompt 命令表單,進入C:\Program Files\nodejs\myapp檔案夾
鍵入node helloworld.js
瀏覽器輸入http://localhost:8080或者地址http://127.0.0.1:8080/
頁面輸出 :Hello World
第4步:安裝supervisor提高nodejs調試效率
這一步不是必須,僅僅是為了提高nodejs開發效率的輔助操作。以往我們開發PHP項目,代碼每改動一次,能夠直接開啟瀏覽器預覽效果,不需手動重新啟動服務。可是開發nodejs程式,調試的時候,不管你改動了代碼的哪一部分,都須要重新啟動服務才幹生效。這是由於 Node.js 僅僅有在第一次引用到某部份時才會去解析腳
本檔案,以後都會直接訪問記憶體,避免反覆載入。。Node.js的這樣的設計儘管有利於提高效能,卻不利於開發調試,由於我們在開發過程中總是希望修改後馬上看到效果,而不是每次都要終止進程並重新啟動。supervisor 能夠協助你實現這個功能,它會監視你對代碼的修改,並自己主動重新啟動 Node.js。
supervisor的安裝也非常easy:
直接用npm安裝既可,鍵入命令: npm install supervisor -g 然後程式自己主動下載supervisor安裝包到本地開始安裝。
這裡注意一點的就是,supervisor必須安裝到全域,假設你不安裝到全域,錯誤命令會提示你安裝到全域。
假設不想安裝到預設的全域,也能夠自己改動全域路徑到當前路徑
npm config set prefix "路徑"
安裝完以後就能夠用supervisor 來啟動服務了。
supervisor app.js
補充:npm經常使用命令
(1)npm install moduleNames
安裝Node模組
注意事項:假設在使用模組的時候不知道其名字,能夠通過http://search.npmjs.org網站依照
索引值找到想要的模組。npm也提供了查詢的功能 npm search indexName
安裝完成後會產生一個node_modules檔案夾,其檔案夾下就是安裝的各個node模組。
node的安裝分為全域模式和本地模式。普通情況下會以本地模式執行,包會被安裝
到和你的應用代碼統計的本地node_modules檔案夾下。在全域模式下,Node包會被
安裝到Node的安裝資料夾下的node_modules下。全域安裝命令為
npm install -g moduleName。獲知使用npm set global=true來設定安裝模式
,npm get global能夠查看當前使用的安裝模式。npm install <name> --save 安裝的同一時候,將資訊寫入package.json中
項目路徑中假設有package.json檔案時,直接使用npm install方法就能夠依據dependencies配置安裝全部的依賴包
這樣代碼提交到github時,就不用提交node_modules這個目錄了。
(2)npm view moduleNames
查看node模組的package.json目錄
注意事項:假設想要查看package.json目錄下某個標籤的內容,能夠使用
npm view moduleName labelName
(3)npm list
查看當前檔案夾下已安裝的node包。同命令npm ll/npm ls/npm la
注意事項:Node模組搜尋是從代碼啟動並執行當前檔案夾開始的,搜尋結果取決於當前使用的檔案夾中
的node_modules下的內容。 npm list parseable=true能夠檔案夾的形式來展現當
前安裝的全部node包
(4)npm help
查看協助命令。假設要單獨查看install命令的協助,能夠使用的npm help install
(5)npm view moudleName dependencies
查看包的依賴關係
(6)npm view moduleName repository.url
查看包的源檔案地址
(7 npm view moduleName engines
查看包所依賴的Node的版本號碼
(8)npm help folders
查看npm使用的全部目錄
(9)npm rebuild moduleName
用於更改包內容後進行重建
(10)npm outdated
檢查包是否已經過時,此命令會列出全部已經過時的包,能夠及時進行包的更新
(11)npm update moduleName
更新node模組
(12)$ npm uninstall moudleName
卸載node模組
(13)一個npm包是包括了package.json的目錄,package.json描寫敘述了這個目錄的結構。訪
問npm的json目錄的方法例如以下:
npm help json
此命令會以預設的方式開啟一個網頁,假設更改了預設開啟程式則可能不會以網頁的形式打
開。
(14)公布一個npm包的時候,須要檢驗某個包名是否已存在
npm search packageName
(15)非常多時候我們在使用一個npm包的時候常常會忘記了require其相互依賴的模組,我們能夠
藉助如例如以下命令來查看此模組相互依賴的包都有哪些
(16)npm init 會引導你建立一個package.json檔案,包含名稱、版本號碼、作者這些資訊等
(17)npm rm <name>移除,卸載一個模組。有下面幾種命令形式:
npm rm <name>
npm r <name>
npm uninstall <name>
npm un <name>
(18)npm root 查看當前project的包的安裝路徑,npm root -g 是查看全域的包的安裝路徑
(19)npm docs <packageName> 嘗試當前包相應的文檔URL,並使用瀏覽器開啟該文檔。
(20)npm config ? 擷取設定檔資訊,如環境變數,npmrc檔案,package.json
很多其它命令請參看官方文檔https://npmjs.org/doc/
本文參考文檔:
1. Error: Cannot find module ‘express’ http://blog.i-evaluation.com/2012/09/17/error-cannot-find-module-express/
2. Node.js Manual & Documentation http://nodejs.org/docs/v0.4.1/api/modules.html
3. nodejs-win http://code.google.com/p/nodejs-win/
4. nodejs官方文檔 https://npmjs.org/doc/
下面為拓展連結:
Node + Redis = Fun http://howtonode.org/node-redis-fun
Node.js家園 http://nodejs.gamesys.net/page/11
Nodejs開源應用 http://obullxl.duapp.com/