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('这里是标准的输出流\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的更多相关文章
- 浅试WebStorm配置Node.js开发环境
web前端开发IDE一直喜欢用WebStorm,这里简单介绍如何用WebStorm搭建一个Node.js开发环境. 首先,需要在本地安装好node.js,以及npm包管理工具.你也可以吧node.js ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- 手把手教你学node之搭建node.js开发环境
搭建node.js开发环境 本文只针对在Linux或者Mac下面.至于使用 Windows 并坚持玩新技术的同学,我坚信他们一定有着过人的.甚至是不可告人的兼容性 bug 处理能力,所以这部分同学麻烦 ...
- 1.0搭建 Node.js 开发环境
<搭建 Node.js 开发环境> 本课程假设大家都是在 Linux 或者 Mac 下面.至于使用 Windows 并坚持玩新技术的同学,我坚信他们一定有着过人的.甚至是不可告人的兼容性 ...
- Linux虚拟机中 Node.js 开发环境搭建
Node.js 开发环境搭建: 1.下载CentOS镜像文件和VMWare虚拟机程序; 2.安装VMWare——>添加虚拟机——>选择CentOS镜像文件即可默认安装带有桌面的Linux虚 ...
- Nodejs学习笔记(一)--- 简介及安装Node.js开发环境
目录 学习资料 简介 安装Node.js npm简介 开发工具 Sublime Node.js开发环境配置 扩展:安装多版本管理器 学习资料 1.深入浅出Node.js http://www.info ...
- 【转】使用nvm快速搭建 Node.js 开发环境
原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...
- Nodejs学习笔记(一)—简介及安装Node.js开发环境
一.简介 Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言: Node.js采用的Javascript引擎是来自Google Chrome的V8:运行在浏览器外不用考虑 ...
- ES6 学习笔记 (2)-- Liunx环境安装Node.js 与 搭建 Node.js 开发环境
笔记参考来源:廖雪峰老师的javascript全栈教程 一.安装Node.js 目前Node.js的最新版本是6.2.x.首先,从Node.js官网下载对应平台的安装程序. 1.下载 选择对应的Liu ...
随机推荐
- linux 下修改键盘映射
参考文档 原因: 输入 键盘原本的 “\ |”,结果映射到 "< >",而 < 与 > 对应的键名分别是 less 与 greater 查看键名: xev ...
- 4、css盒模型和文本溢出
4:css盒模型和文本溢出 学习目标 1.认识盒子模型 2.盒子模型的组成部分 3.学习盒子模型的相关元素 margin padding 4.文本溢出相关的属性 一.css属性和属性值的定义 盒模型是 ...
- ASP.NET异步
1.ASP.NET线程模型 在WEB程序中,天生就是多线程的,我们知道,一个WEB服务可以同时服务器多个用户,我们可以想象一下,WEB程序应该运行于多线程环境中,对于运行WEB程序的线程,我们可以称之 ...
- Codeforces 670F - Restore a Number - [字符串]
题目链接:https://codeforces.com/contest/670/problem/F 题意: 有一个非负整数 $n$,在它的右侧添上它的位数后,被发送出去:例如 $6510$,加上位数 ...
- tensoflow模型中提示:ValueError: Variable rnn/basic_rnn_cell/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? 解决办法
在利用tensorflow框架进行模型训练的时候,有时我们需要多次训练对结果求均值来得到一个均衡的评测结论.比如训练十次求平均值.但是tf的本质就是图,当变量第一次定义使用后,第二次再使用就是提示: ...
- 1.7Oob 静态变量静态方法
1)静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员 2)如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量. 3)静态方法中不能直接调用非静态方法 ...
- 【每日dp】 Gym - 101889E Enigma 数位dp 记忆化搜索
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的 ...
- ul li 的 float:left;
如 ul li{float:left;} 出来的效果不仅是原本默认竖着排的元素变横排,还是往左边排,重点是元素是按顺序排的,如果float等于right,则不仅是往右排,且元素是倒着排的,如原来的a ...
- screen基本用法
当某些命令执行时间过长或者某些程序关闭shell后自动断开时,就能使用screen 1.安装yum -y install screen 2.输入screen命令进入screen控制台 3.输入scre ...
- MySQL 数据库登录查询
1. 进入到bin目录: 键入cd..,一直到出现C:\ 为止 然后cd bin所在路径: 如: C:\cd C:\Program Files\MySQL\MySQL Server 5.7 ...