Nodejs快速搭建專案 區分生產和測試環境

2021-10-05 14:22:37 字數 2509 閱讀 7284

問題:測試環境和生產環境不是同樣的資料庫或者配置不一樣,那麼上線的時候總不能改**吧?那麼如果實現一鍵部署呢?

實現:那麼我就來快速搭建並且測試一下,步驟如下。

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模...