在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