expree项目开发完,涉及到不同环境,要在启动到时候就要配置好环境变量,

packge.json文件如下:

  "scripts": {
"dev": "NODE_ENV=development DEBUG=name nodemon ./bin/www --name 'name'",
"start": "NODE_ENV=production pm2 start ./bin/www --name 'name'",
"uat": "NODE_ENV=uat pm2 start ./bin/www --name 'name'",
"testStart": "cross-env node ./bin/www --name 'name'"
}

在业务场景中,根据不同环境取不同到参数配置:

config/index.js 文件如下:

var path = require('path');
// 通过NODE_ENV来设置环境变量,如果没有指定则默认为开发环境
var env = process.env.NODE_ENV || 'development';
console.log('env='+env);
env = env.toLowerCase();
// 载入配置文件
var file = path.resolve(__dirname, env);
try {
var config = module.exports = require(file);
// console.log('Load config: [%s] %s', env, file);
} catch (err) {
// console.error('Cannot load config: [%s] %s', env, file);
throw err;
}

同时 config文件夹下,以你到环境变量为名,命名如下文件 development.js 、 production.js、uat.js.

上述写法,本地mac上没有什么问题,执行 npm run uat 的时候,就是process.env.NODE_ENV=uat.

但是部署到linux 系统uat环境,process.env.NODE_ENV一直为undefined。也就是启动的时候

NODE_ENV=uat pm2 start ./bin/www --name 'name' 这个没有正确传递过去。

解决方案如下:
根目录新建一个ecosystem.config.js
module.exports = {
apps : [
{
name: "namexxx",
script: "./bin/www",
watch: true,
env: {
"PORT": ,
"NODE_ENV": "development"
},
env_uat: {
"PORT": ,
"NODE_ENV": "uat"
},
env_production: {
"PORT": ,
"NODE_ENV": "production",
}
}
]
}

package.json修改如下:

  "scripts": {
"dev": "NODE_ENV=development DEBUG=namexxx nodemon ./bin/www --name 'namexxx'",
"start": "pm2 start ecosystem.config.js --env production",
"uat": "pm2 start ecosystem.config.js --env uat"
},

注意  --env后面的参数,要跟ecosystem.config.js 配置项里面的env_后面的保持一致。

参考文档:http://pm2.keymetrics.io/docs/usage/environment/

EXPRESS项目PM2启动NODE_ENV传参数不生效问题解决方法的更多相关文章

  1. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  2. soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  3. vue 项目重定向时需要传参数

    1.在项目首页路由因需要进行传参数,例如需要重定向到:path: "/index?from=0" 2.重定向时写法如下: redirect: {path: '/index',que ...

  4. app间互相启动及传参数

    http://blog.sina.com.cn/s/blog_13bc6705b0102wmc5.html http://blog.csdn.net/iefreer/article/details/8 ...

  5. 微信小程序传参数的几种方法

    1,navigator 跳转时 wxml页面(参数多时可用“&”) <navigator url='../index/index?id=1&name=aaa'></n ...

  6. C# form 传参数的几个方法

    方法一:传值最先想到的,Form2构造函数中接收一个string类型参数,即Form1中选中行的文本,将Form2的TextBox控件的Text设置为该string,即完成了Form1向Form2的传 ...

  7. setintervalue传参数的三种方法

    http://www.cnblogs.com/wkylin/archive/2012/09/07/2674911.html http://www.bhcode.net/article/20110822 ...

  8. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  9. 【ASP.NET Core】给中间件传参数的方法

    最近博客更新频率慢了些,原因有三: 其一,最近老周每星期六都录 ASP.NET Core 的直播,有些内容在视频里讲过,就不太想在博客里面重复.有兴趣的话可以去老周的微博看,或者去一直播,直播帐号与微 ...

随机推荐

  1. Ignite(二): 架构及工具

    1.集群和部署 Ignite集群基于无共享架构,所有的集群节点都是平等的,独立的,整个集群不存在单点故障. 通过灵活的Discovery SPI组件,Ignite节点可以自动地发现对方,因此只要需要, ...

  2. JS中冒号的作用

    JS中冒号的作用1.声明对象的成员2.switch语句分支3.三元表达式 1.声明对象的成员 var Book = { Name: '法', Price: 100, Discount : functi ...

  3. 使用Visual Studio Code开发(编译、调试)C++程序

    总体安装步骤 安装VSC(Visual Studio Code). 安装C/C++编译器(如MinGW-w64),然后配置好环境变量.//完成这步即可在VSC的终端(命令行)下编译.运行.cpp程序了 ...

  4. 关于使用format()方法格式化字符串,读这一篇就够了!

    从Python 2.6开始,又出现了另外一种格式化字符串的方法——format()方法.format()方法是字符串众多方法中的一个,调用这个方法时要使用点操作符(.),该方法返回一个格式化好的字符串 ...

  5. SpringCloud启动类指定扫描包路径

    //如果这个启动类所在的包路径隐藏的很深,则需要指定扫描包.否则默认扫描启动类所在的子包路径下 @SpringBootApplication(scanBasePackages="com.jo ...

  6. (最详细)小米Note 2的usb调试模式在哪里开启的教程

    当我们使用安卓手机链接Pc的时候,或者使用的有些工具比如我们学院营销团队当使用的工具引号精灵,之前使用的老版本就需要开启USB开发者调试模式下使用,现当新版本不需要了,如果手机没有开启USB开发者调试 ...

  7. Mysql在sql中截取时间类型字段的年月日

    //显示年月日 select date_format(date ,'%Y-%m-%d' ) from talbe_a //根据年月日分组 select date_format(date ,'%Y-%m ...

  8. Unity的Write Defaults->从一个例子谈起

    Write Defaults是什么? 在Unity的Animator中点击任何一个手动创建的State,我们就会在Inspector面板中看到下图的WriteDefaults选项 (图1,Animat ...

  9. VMware 12 安装 Windows server 2008 系统

    一.准备工作 安装了VMware 12 的PC 准备windows  server 2008 的ISO操作系统文件 官网地址:https://www.microsoft.com/en-us/downl ...

  10. Vue ElementUI 按需引入

    一.element UI组件的单独使用(第一种方法): 1.cnpm install babel-plugin-component -D         2.找到.babelrc 配置文件       ...