天天看點

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步:下載下傳、安裝檔案

代開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整個目錄複制一份到你的項目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,代碼例如以下:

進入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/

繼續閱讀