node服務開發環境判斷和啓動端口指定---process.env.NODE_ENV

在node啓動的時候咱們須要在代碼裏面判斷服務器運行環境html

能夠根據process.env.NODE_ENV來判斷node

1、開發環境的判斷npm

一、安裝 npm i -g cross-envjson

二、啓動 cross-env NODE_ENV=development node app.js數組

三、console.log('NODE_ENV:' + process.env.NODE_ENV );  //在代碼裏面拿到參數值爲development 服務器

 

2、啓動端口的指定app

這裏指定端口,須要一個commander包來解析參數測試

一、安裝 npm i commanderui

二、代碼以下server

var program = require('commander');
var http = require("http")

//process.stdin.resume();
//一個指向 標準輸入流(stdin) 的可讀流(Readable Stream)。標準輸入流默認是暫停 (pause) 的,因此必需要調用 process.stdin.resume() 來恢復 (resume) 接收:

process.stdout.write('這裏是標準的輸出流\n');
//一個指向標準輸出流(stdout)的 可寫的流(Writable Stream):

//processs參數解析
program
	.version("1.3.2")
	.option('-c, --config <path>', 'Config file path')
	.option('-p, --port <port>', 'Listening port number')
	.option('-a, --address <ip>', 'Listening host name or ip')
	.option('-b, --blockchain <path>', 'Blockchain db path')
	.option('-x, --peers [peers...]', 'Peers list')
	.option('-l, --log <level>', 'Log level')
    .option('-d, --develop <develop>', 'develop path')
	.parse(process.argv);
var server =  http.createServer(function(req,res){
	res.writeHead(404,{
		'Content-Type':'text/html;charset=utf-8'
	});
	res.write("<p>測試一下</p>");
	res.end();
});
// 獲取驗證碼
console.log('NODE_ENV:' + process.env.NODE_ENV );
console.log('program:' + program.develop );
const port = program.port || 3000; 
server.listen(port,function(){
	console.log('服務器啓動成功!請訪問:http://127.0.0.1:'+port);
});

三、 啓動  node app.js -p 8888 -d dev 

其實這個也已經指定了開發環境和端口

 

最後:也能夠採用 cross-env NODE_ENV=development node app.js -p 8888 -d dev

 

四、若是使用pm2啓動,會致使pm2參數和node啓動的參數混亂問題,因此當使用pm2的時候,通常採用 pm2.json的配置啓動

  在項目下新建pm2.json,寫入以下配置

{
  "apps" : [{
    "name"        : "wechat",
    "script"      : "./bin/www",
    "args"        : ["-p", "3001"],  //node的args參數 等同於  node ./bin/ww  -p 30001    其中參數-p和3001,均可以有 process.argv 拿到,process.argv爲一個數組
    "node_args"   : "--harmony",    //node harmony模式啓動
    "merge_logs"  : true,         
    "cwd":"./",
    "log_file": "./log/combined.outerr.log",
    "out_file": "./log/out.log",
    "error_file": "./log/err.log",
    "env": {                    //node的 env參數, 能夠經過  process.env.xxx獲取
      "NODE_ENV": "production",
    "PORT":3000 } }] }

  啓動:  pm2 start pm2.json

相關文章
相關標籤/搜索