[教學] nodeJS直接module加載於windows native node

NodeJS 終於在0.5.1(unstable) 版本提供了Windows native supprot.,但是美中不足的部份就是childprocess的功能支援不完全,因此無法透過node.exe來安裝npm

這樣子會造成很多遺憾,例如socket.io, redis, mysql等其他外掛模組都無法加載進來,本篇文章就是講解如何直接將這些外部module加載進來,不需要經過npm或者其他腳本語言安裝module。

設定環境變數
下載node v0.5.2 native windows

將node.exe放置到自己的資料夾中(這邊預設為c:node

設定windows 環境變數,設定其中一個變數為NODEPATH,值為c:node (剛才設定的路徑),另外變數Path,在數值後面加上;%NODEPATH%

[![](http://1.bp.blogspot.com/-vC5e3HKfXD4/TjIdf8G1KEI/AAAAAAAANIU/M76rRBU9uLo/s400/%25E5%259C%2596%25E7%2589%2587+1.jpg)](http://1.bp.blogspot.com/-vC5e3HKfXD4/TjIdf8G1KEI/AAAAAAAANIU/M76rRBU9uLo/s1600/%25E5%259C%2596%25E7%2589%2587+1.jpg)
[![](http://1.bp.blogspot.com/-kyr3I3OXmlw/TjIeFn2cJYI/AAAAAAAANIY/Z3_sYgbpl28/s400/%25E5%259C%2596%25E7%2589%2587+2.jpg)](http://1.bp.blogspot.com/-kyr3I3OXmlw/TjIeFn2cJYI/AAAAAAAANIY/Z3_sYgbpl28/s1600/%25E5%259C%2596%25E7%2589%2587+2.jpg)
[![](http://1.bp.blogspot.com/-xS9G3l2Nv50/TjIeGF1mX1I/AAAAAAAANIc/Poi2q9hIPH4/s400/%25E5%259C%2596%25E7%2589%2587+3.jpg)](http://1.bp.blogspot.com/-xS9G3l2Nv50/TjIeGF1mX1I/AAAAAAAANIc/Poi2q9hIPH4/s1600/%25E5%259C%2596%25E7%2589%2587+3.jpg)
[![](http://1.bp.blogspot.com/-6Cns2M6r4NU/TjIeGQjcs1I/AAAAAAAANIg/UuCWQFaJN24/s400/%25E5%259C%2596%25E7%2589%2587+5.jpg)](http://1.bp.blogspot.com/-6Cns2M6r4NU/TjIeGQjcs1I/AAAAAAAANIg/UuCWQFaJN24/s1600/%25E5%259C%2596%25E7%2589%2587+5.jpg)
**加載外部模組** 首先準備了一個[simplechat 範例程式](https://github.com/devinsba/nodejs-simplechat)(這是從網路上挖出來的),下載後解開,將資料夾重新命名為simplechat,應該會看到如下圖
[![](http://4.bp.blogspot.com/-0XmjOF9a1EU/TjImiZtdAEI/AAAAAAAANIk/Af75AgBrpnQ/s1600/%25E5%259C%2596%25E7%2589%2587+6.jpg)](http://4.bp.blogspot.com/-0XmjOF9a1EU/TjImiZtdAEI/AAAAAAAANIk/Af75AgBrpnQ/s1600/%25E5%259C%2596%25E7%2589%2587+6.jpg)
接下來就是我們要使用的加載模組,這邊以socket.io為例。其實原則很簡單,就是將整包模組原始檔下載之後,再解壓縮到c:node資料夾中,應該看到的檔名會是xxxxx-socket.io—-,原本名稱會加上開發者名稱、版本號碼等,只要將資料夾重新命名為模組名稱,socket.io就行了。 目前這邊所需要的東西有兩個[socket.io](http://socket.io/), [socket.io-client](http://socket.io-client/),一樣下載之後解壓縮重新命名
[![](http://4.bp.blogspot.com/-5hVejPZaD_E/TjIm5Oa0MJI/AAAAAAAANIo/8jhW-GbOdGs/s1600/%25E5%259C%2596%25E7%2589%2587+7.png)](http://4.bp.blogspot.com/-5hVejPZaD_E/TjIm5Oa0MJI/AAAAAAAANIo/8jhW-GbOdGs/s1600/%25E5%259C%2596%25E7%2589%2587+7.png)
接著我們進入commnad line執行一下看看是否如願執行。 `c:node>cd simplechat



c:nodesimplechat>..node.exe realtime-chat.js

`
[![](http://3.bp.blogspot.com/-CGvWNn4X5hY/TjInh4lVt6I/AAAAAAAANIs/aaNIhXNY2vQ/s1600/%25E5%259C%2596%25E7%2589%2587+8.png)](http://3.bp.blogspot.com/-CGvWNn4X5hY/TjInh4lVt6I/AAAAAAAANIs/aaNIhXNY2vQ/s1600/%25E5%259C%2596%25E7%2589%2587+8.png)
結果好像出現了些錯誤,沒關係至少可以得到些提示,[uglify-js](https://github.com/mishoo/UglifyJS),一樣下載之後解壓縮重新命名成uglify-js,再重新執行看看。
[![](http://2.bp.blogspot.com/-ANNG3XvDaQw/TjIoYAX60xI/AAAAAAAANIw/UEbveVygZKQ/s1600/%25E5%259C%2596%25E7%2589%2587+9.png)](http://2.bp.blogspot.com/-ANNG3XvDaQw/TjIoYAX60xI/AAAAAAAANIw/UEbveVygZKQ/s1600/%25E5%259C%2596%25E7%2589%2587+9.png)
還是一樣出現錯誤,一樣下載[redis](https://github.com/mranney/node_redis),接著應該不會有問題了,吧!? **執行** 果然看到了一線署光,沒錯伺服器開始運作了,接著到瀏覽器試試看 `localhost:3000

`
[![](http://4.bp.blogspot.com/-nCJDUWQocuA/TjIpu8MXDZI/AAAAAAAANI0/q0EeizMiFuY/s640/%25E5%259C%2596%25E7%2589%2587+11.png)](http://4.bp.blogspot.com/-nCJDUWQocuA/TjIpu8MXDZI/AAAAAAAANI0/q0EeizMiFuY/s1600/%25E5%259C%2596%25E7%2589%2587+11.png)
沒錯,果然沒有任何問題,實在是太好了!外掛模組載入**成功**。 **結語** 目前所使用版本為node.exe v0.5.2,這個版本之後開始可以支援windows環境變數,因此可以設定NODE_PATH之後,外掛模組會自己導向到這個環境變數尋找node.exe的路徑。雖然npm還是無法在windows上完整執行,不過已經算是一個很大的邁進,之後node將會走上什麼變化,大家就拭目以待。 如果對於node抱持著一點點好奇,可以參考[這邊相關文章](http://clonn.blogspot.com/search?q=node),或者到 - [wiki.nodejs.tw](http://wiki.nodejs.tw/) - [nodejs.tw](http://nodejs.tw/) 期待聽到大家的回饋與想法,謝謝! 本篇文章資料參考於:
[Node.js on Windows: Who Needs NPM?](http://icewalker2g.wordpress.com/2011/07/23/node-js-on-windows-who-needs-npm/)

CaesarChi

Web developer, focus on website fullstack, special JavaScript, and love sharing developing experience and communicate with developers. http://about.me/clonn