問題:測試環境和生產環境不是同樣的資料庫或者配置不一樣,那麼上線的時候總不能改**吧?那麼如果實現一鍵部署呢?
實現:那麼我就來快速搭建並且測試一下,步驟如下。
1、你已經成功安裝了node。
2、快速搭建乙個專案:使用express的應用程式生成器npx express-generator
。具體實現如下:
按照上個鏈結建立專案,使用npm start
命令正常啟動,通過瀏覽器訪問http://localhost:3000/
就可以檢測是否成功啟動。
看**:
其實我們可以看到這個demo已經區分了生產或者測試的啟動埠設定了,見bin/www的檔案,部分**如下:
;擴充套件:如果我在不改**的情況下,想使用8083埠啟動,怎麼辦?
set port=8083 & npm start
結果如下:
3、**中區分環境。
第2步的例子只是可以區分埠,但是如果想區分資料庫或者redis的連線,上面的步驟是遠遠不夠的。那麼如果能實現零配置進行啟動呢?
最簡單的想法:弄乙個配置檔案,在發布之前修改配置檔案是測試還是生產。但是注意,只要是需要人工干預的,都是有可能出現問題的,那就是會忘記…
我們可以使用以下辦法,讓其動態實現:
1、在根目錄建立config目錄,以下(1)(2)(3)步都是存在於config目錄下
(1)建立測試或者開發環境的development.js類
module.exports=
}
(2)建立生產環境的production.js類
module.exports=
}
(3)建立動態讀取的類choise.js
var path=
require
('path'
)//通過node_env來設定環境變數,如果木有指定則預設為生產環境
var env=process.env.
node_env
||'production'
;env=env.
tolowercase()
;//載入配置檔案
var file=path.
resolve
(__dirname,env)
;try
catch
(error
)
(4)引入環境**
在route/index.js檔案中,新增choise.js的引入,並且列印和返回最終獲取的環境資訊,最終**如下:
var express =
require
('express');
var router = express.
router()
;var choise=
require
('../config/choise.js'
)/* get home page. */
router.
get(
'/',
function
(req, res, next));
});module.exports = router;
(5)進行測試,建立production.bat檔案,此bat檔案是window環境的,直接在資料夾目錄找到此檔案,雙擊即可啟動
set node_env=production
set port=8083
npm start
(6)檢視結果,結果圖如下
(7)以上就是結果,如果你要建立開發或者測試環境的,按照第(5)步一樣的形式就行了,比如我建立了development.bat,**如下:—沒有設定埠,但是因為www檔案中,如果沒有設定預設是3000
set node_env=development
npm start
那麼結果圖如下:
nodejs搭建web專案
如果要使用cnpm可安裝 cnpm映象 事實證明不建議使用,因為cnpm和npm有一些包不同步 npm install g cnpm registry 切到專案目錄 cd var www 安裝express生成器 npm install express generator g 檢視版本 expres...
Express搭建NodeJS專案
1.安裝node.js 2.安裝npm 3.安裝express 在本例中預設全域性安裝express 安裝express生成器 如果沒有安裝express generator或安裝路徑不對,會報以下錯誤 檢視是否安裝成功,隨便輸的乙個命令 建立專案資料夾 此處安裝了ejs模板,預設安裝模板jade ...
nodejs 快速建立express專案
1.npm install g express 2.npm install g express generator 3.express建立專案預設為jade模板引擎,若使用其他引擎,使用命令切換,用express help檢視命令 express e ejs projectname e為選擇ejs模...