zoukankan      html  css  js  c++  java
  • node服务开发环境判断和启动端口指定---process.env.NODE_ENV

    在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('这里是标准的输出流
    ');
    //一个指向标准输出流(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

  • 相关阅读:
    VisualC#的菜单编程
    利用Mutex实现应用程序的单实例运行
    C#下实现动态系统托盘图标
    C#中TreeView组件使用方法初步
    VisualC#中实现窗体间的数据传递之一
    AJAX在VS2005中的简单应用
    LiteORM学习一:EntityObject 设计
    读书笔记:人月神话的博客积极的心态读后感
    LiteORM学习三:查询设计
    LiteORM学习二:数据库设计
  • 原文地址:https://www.cnblogs.com/muamaker/p/9122122.html
Copyright © 2011-2022 走看看