在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

node服务开发环境判断和启动端口指定---process.env.NODE_ENV的更多相关文章

  1. 浅试WebStorm配置Node.js开发环境

    web前端开发IDE一直喜欢用WebStorm,这里简单介绍如何用WebStorm搭建一个Node.js开发环境. 首先,需要在本地安装好node.js,以及npm包管理工具.你也可以吧node.js ...

  2. 快速搭建 Node.js 开发环境以及加速 npm

    如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...

  3. 手把手教你学node之搭建node.js开发环境

    搭建node.js开发环境 本文只针对在Linux或者Mac下面.至于使用 Windows 并坚持玩新技术的同学,我坚信他们一定有着过人的.甚至是不可告人的兼容性 bug 处理能力,所以这部分同学麻烦 ...

  4. 1.0搭建 Node.js 开发环境

    <搭建 Node.js 开发环境> 本课程假设大家都是在 Linux 或者 Mac 下面.至于使用 Windows 并坚持玩新技术的同学,我坚信他们一定有着过人的.甚至是不可告人的兼容性 ...

  5. Linux虚拟机中 Node.js 开发环境搭建

    Node.js 开发环境搭建: 1.下载CentOS镜像文件和VMWare虚拟机程序; 2.安装VMWare——>添加虚拟机——>选择CentOS镜像文件即可默认安装带有桌面的Linux虚 ...

  6. Nodejs学习笔记(一)--- 简介及安装Node.js开发环境

    目录 学习资料 简介 安装Node.js npm简介 开发工具 Sublime Node.js开发环境配置 扩展:安装多版本管理器 学习资料 1.深入浅出Node.js http://www.info ...

  7. 【转】使用nvm快速搭建 Node.js 开发环境

    原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...

  8. Nodejs学习笔记(一)—简介及安装Node.js开发环境

    一.简介 Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言: Node.js采用的Javascript引擎是来自Google Chrome的V8:运行在浏览器外不用考虑 ...

  9. ES6 学习笔记 (2)-- Liunx环境安装Node.js 与 搭建 Node.js 开发环境

    笔记参考来源:廖雪峰老师的javascript全栈教程 一.安装Node.js 目前Node.js的最新版本是6.2.x.首先,从Node.js官网下载对应平台的安装程序. 1.下载 选择对应的Liu ...

随机推荐

  1. fclose函数无响应

    现象:win32程序在退出时无响应,当一步步跟踪代码时走到fclose. 原因:打开文件在一个线程中,写文件时在另一个线程,在open和write文件时均正常,只有在fclose时出现无响应. 解决: ...

  2. Maven -DskipTests和-Dmaven.test.skip=true的区别

    在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳过测试,会使用参数-DskipTests和-Dmaven.test.skip= ...

  3. 【react】---pureComponent的理解

    一.pureComponent的理解  pureComponent表示一个纯组件,可以用来优化react程序.减少render函数渲染的次数.提高性能 pureComponent进行的是浅比较,也就是 ...

  4. C# 单元测试能过,但Web项目就报错!

    第一印象肯定是两个项目中各有不同的地方 背景: 公司项目采用IBatic+Castle实现 排查过程: 1.sqlmap文件是否一至,并且读取位置也要正确 2.dao.config文件要一至,读取位置 ...

  5. XmlHelpers

    最近处理数据的时候用到了Xml和其他数据之间的转换,所以整理了一些方法. class XMLHelper { /// <summary> /// 读取xml模板 /// </summ ...

  6. 1.7Oob 构造方法

    1)构造方法 在创建对象后不用调用会自动执行,如无自定义构造会默认执行没有参数没有,且方法体中没有任何语句的, 2)构造方法在main入口开始后就执行

  7. saltstack安装配置使用记录

    安装 参考 http://docs.saltstack.cn/topics/installation/index.html#installation 选择对应的OS 配置 环境如下: master:1 ...

  8. tomcat闪退

    tomcat/bin/setclasspath.bat 用记事本打开 在setclasspath.bat的文件里添加两行代码,告诉tomcat,jdk和jre的位置(添加位置在: rem Make s ...

  9. delphi inttohex 整型到十六进制

    inttohex from delphi help: Returns the hex representation of an integer. Unit SysUtils Category nume ...

  10. 如何使用Beyond Compare 对比差异文件【制作Patch(补丁包)文件】

    场景:研发部的代码从SVN变更至GIt,通过Jenkins每天自动生成程序包. 如需要获取单独的程序包更新,而不是整个程序包覆盖更新,这时候就需要用到Beyond Compare 对比工具 操作步骤1 ...