我個人pc環境是ubuntu14+jdk7,是以下面的步驟及問題也是基于此進行及産生的。
這個安裝的過程在網上有很多教程,這裡就不詳細講了。
檢視nodejs的版本,網上很多教程都寫的是:
但一直node指令找不到的異常,使用以下指令執行成功:
終端顯示:
經測試,ubuntu下nodejs的指令是nodejs,而windows平台的是node。
檢視npm版本是
簡單介紹:
在開發 node.js 實作的 http 應用時會發現,無論你修改了代碼的哪一部份,都必須終止 node.js 再重新運作才會奏效。這是因為 node.js 隻有在第一次引用到某部份時才會去解析腳 本檔案,以後都會直接通路記憶體,避免重複載入。node.js的這種設計雖然有利于提高性能,卻不利于開發調試,因 為我們在開發過程中總是希望修改後立即看到效果,而不是每次都要終止程序并重新開機。
supervisor 可以幫助你實作這個功能,它會監視你對代碼的改動,并自動重新開機 node.js。
a) 全局安裝 (我的選擇)
b) 安裝在目前檔案夾下
安裝成功後,指令行會提示 npm info ok
-g代表安裝到node_path的lib裡面,而-d代表把相依性套件也一起安裝。如果沒有-g的話會安裝目前所在的目錄(會建立一個node_modules的檔案夾)。
通過以下指令了檢視supervisor的幫助文檔,
終端顯示:
經查找後,發現npm在安裝子產品的時候,會把源碼及執行檔案分開。
注意:這裡也是和網上的大部分教程不一樣的地方,網上的教程都說源碼及執行檔案都是放在/usr/local/lib/node_modules 目錄下的,估計是npm版本不同的原因。
找到并檢視supervisor的執行檔案:
看到supervisor的介紹,我們很容易得知,這個小子產品的主要功能有兩個:
1、關閉正在執行的項目
2、啟動前面關閉的項目
這裡報的錯誤是沒有找到node,而且很清楚地發現執行檔案的第一行使用的指令是!/usr/bin/env node ,回想前面檢視nodejs版本的指令。項目啟動用到的應該是nodejs本身的指令nodejs,
于是将這一行修改如下進行嘗試,問題得到解決。
終端顯示supervisor的幫助如下:
注意:根據幫助文檔,檢視supervisor的指令是supervisor -v 。指令中的v是大寫,安裝過程中我發現windows下小寫也行,但在我的ubuntu14的環境下必須是大寫。
在安裝完後,express與supervisor一樣,也存在nodejs指令不符合的問題,同樣的方式找到執行檔案進行修改此指令即可。
安裝完了express,如果版本是4.0及以上的話,還要安裝另外一個子產品,express才能使用。
cd 到test目錄的上級目錄,執行以下指令
執行完後,回到項目目錄檢視:
package.json :
app.js:
bin/www:
cd到test目錄下
終端顯示異常:
還是node指令的問題,修改package.json 檔案中的
bin/www檔案中的
執行成功
npm是什麼東西呢?大部分的java程式員都使用過maven。而npm的職能與maven相似,是nodejs的包管理工具,可以使用它來下載下傳包、檢視檔案等功能用express建立的應用程式是一個符合commonjs規範的一個nodejs包npm執行的時候會讀取目前目錄的package.json檔案,這個也就是我上面那個bug出現的原因執行npm start其實是執行package.json中的script對應的對象中的start屬性所對應的指令。
是以其實如果吧package.json中的start改成test或者其他字元串,然後你在終端敲上npm test/或者其他,程式照樣會運作 。
其實package.json就是一個配置檔案,隻是我們之前用的xml格式,但是在nodejs用的是json可以,簡單容易了解。從package.json我們可以看出來npm start其實執行的是./bin/www裡面是建立一個伺服器然後監聽3000端口,是以我們可以在浏覽器中通過輸入"localhost:3000"來通路應用程式。
npm start 是啟用的 /bin/www檔案裡的腳本
如果你想用nodejs 啟動服務 可以在app.js中添加如下代碼
注意:上面的語句得加在module.exports = app;之前。
得到同樣的結果。
使用supervisor進行熱部署的執行友善調試
這裡解決的過程就不詳細說了,重點是--exec 'node'這個,會發現supervisor執行的還是node指令,而不是nodejs。修改supervisor源檔案目錄下的supervisor.js檔案
為
再次執行成功,項目修改後,nodejs也會自動重新開機。
一開始選擇的是nodeclipse,但用起來确實不怎麼完善。于是選擇webstorm。
關于ide使用及nodejs的使用,在以後使用的過程中會再發文章記錄。