1. 程式人生 > >Windows系統下nodejs安裝及配置

Windows系統下nodejs安裝及配置

關於nodejs中文站,目前活躍度最好的知識站應該是http://www.cnodejs.org/ ,而http://cnodejs.org/則活躍度較低。Express.js是nodejs的一個MVC開發框架,並且支援jade等多種模板,是Node.js上最流行的Web開發框架。這幾天剛接觸PhoneGap,以前也看了一些nodejs的基礎但苦於時間有限一直沒機會親自搭建一個nodejs環境,今天週末,部署了PhoneGap到Android,順便一同搭建了一下nodejs本地環境,自己的操作步驟如下:

第1步:下載、安裝檔案

轉載地址:http://blog.csdn.net/freshlover/article/details/12691031



代開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安裝相關需要的相關模組即可(其他有些系統可能需要單獨安裝NPM下載地址https://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整個資料夾複製一份到你的專案工程下。全域性的安裝是供命令列使用的,使用全域性方式安裝後,使用者就可以在命令列中直接執行該元件包支援的命令,好處是可以提高程式的重複利用程度,避免同樣的內容存在多份副本。缺點是難以處理不同的版本依賴。這裡的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步:測試專案工程

現在安裝了express元件,嘗試鍵入:express myapp 建立一個名為myapp的工程,目錄下多了一個 myapp 資料夾。
是否需要複製node_modules資料夾到myapp下面由上述npm express安裝方式決定

在myapp下新建helloworld.js,程式碼如下:


[javascript]  view plain copy
  1. var http = require("http");  
  2.   
  3. http.createServer(function(request, response) {  
  4.   
  5. response.writeHead(200, {"Content-Type""text/plain"});  
  6.   
  7. response.write("Hello World");  
  8.   
  9. response.end();  
  10.   
  11. }).listen(8080);  
  12.   
  13. 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的安裝也很簡單:

直接用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 檢視當前工程的包的安裝路徑,npm root -g  是檢視全域性的包的安裝路徑

      (19)npm docs <packageName> 嘗試當前包對應的文件URL,並使用瀏覽器開啟該文件。

      (20)npm config ? 獲取配置檔案資訊,如環境變數,npmrc檔案,package.json