node服务开发环境判断和启动端口指定---process.env.NODE_ENV
2018-06-01 16:06 muamaker 阅读(9813) 评论(0) 编辑 收藏 举报在node启动的时候我们需要在代码里面判断服务器运行环境
可以根据process.env.NODE_ENV来判断
一、开发环境的判断
1、安装 npm i -g cross-env
2、启动 cross-env NODE_ENV=development node app.js
3、console.log('NODE_ENV:' + process.env.NODE_ENV ); //在代码里面拿到参数值为development
二、启动端口的指定
这里指定端口,需要一个commander包来解析参数
1、安装 npm i commander
2、代码如下
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); });
3、 启动 node app.js -p 8888 -d dev
其实这个也已经指定了开发环境和端口
最后:也可以采用 cross-env NODE_ENV=development node app.js -p 8888 -d dev
4、如果使用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