koa2 本地运行及 pm2 运行时如何区分 development 和 production

  最近项目本地开发时希望和生产环境区分数据库,本地是 nodemon 启动 app.js 的,生产环境是通过 pm2 启动的,记录在macOS开发时的配置。

  在 app.js 中打印process.env.NODE_ENV,可分别输出 development、production。

app.js
1
console.log('NODE_ENV', process.env.NODE_ENV)

一、本地运行

  本地运行时希望process.env.NODE_ENV拿到的值是development,可以在package.json中的script设置:

1
2
3
"scripts": {
"dev": "export NODE_ENV=development && nodemon app.js"
},

注意

  • 其他文章看到说 Linux、macOS 使用 export,Windows 使用 set,未验证 set 是否有效
  • nodemon 参考 node 自动编译

  启动时执行npm run dev

二、生产环境

  生产环境运行时希望process.env.NODE_ENV拿到的值是production,此随笔涉及到的项目是用 pm2 部署的,关于 pm2 可参考 使用 pm2 部署 node 项目

  对应的 pm2 配置文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
{
"name": "jizhangla",
"script": "./app.js",
"cwd" : "./",
"log_date_format": "YYYY-MM-DD HH:mm:ss",
"max_memory_restart": "500M",
"out_file" : "./pm2/logs/pm2-out.log",
"error_file" : "./pm2/logs/pm2-err.log",
"env_production": {
"NODE_ENV": "production"
}
}

  对应的 start.sh 文件内容如下:

1
2
3
4
git pull origin master
cnpm i
pm2 restart ./pm2/config.json --env production
pm2 monit

注意

  • 常见命令为:pm2 start app.js --env production
以上

随笔标题:koa2 本地运行及 pm2 运行时如何区分 development 和 production

随笔作者:刘先玉

发布时间:2020年12月16日 - 11:10:20

最后更新:2020年12月16日 - 11:10:20

原文链接:https://liuxianyu.cn/article/pm2-koa2-NODE_ENV.html