nuxt如何使用pm2配置环境变量

大家在使用nodejs的时候可能都有过不同的环境,设置的环境变量的值不一样的情况,比如开发模式我想设置NODE_ENV=development,灰度测试设置NODE_ENV=gray,生产环境设置NODE_ENV=production这种需求,这时我们可以使用cross-env,在package.json的scripts里面

{ 
  "scripts": {
    "development": "cross-env NODE_ENV=development node index.js",
    "gray": "cross-env NODE_ENV=gray node index.js",
    "production": "cross-env NODE_ENV=development node index.js",
  }
}

这样process.env.NODE_ENV这个值就可以根据你执行的不同指令而变化了。

然后pm2如何设置环境变量呢?
我是在根目录上建立了一个ecosystem.config.js文件,里面的内容也比较简单,大概是这样的

module.exports = {
  apps: [
    {
      name: 'XXX',
      script: './index.js',
      watch: true,
      ignore_watch: [
        'node_modules',
        'logs'
      ],
      env_dev: {
        NODE_ENV: "development"
      },
      env_prod: {
        NODE_ENV: 'production'
      },
      error_file: './logs/app-err.log',
      out_file: './logs/app-out.log',
      log_date_format: 'YYYY-MM-DD HH:mm:ss',
    }
  ]
};

这里的env_dev和env_prod是pm2文档里面给的规范,执行的时候’env_'是省略的,比如执行pm2 start --env dev,这里的dev就是env_dev,然后环境变量process.env.NODE_ENV就被设置成了development文档在这里

基本使用就是这样,现在我想要在nuxt项目上使用pm2,遇到了一些坑,下面来总结一下。

  1. 如果使用ecosystem.config.js这种形式,那么script这项是一个可执行文件,但是nuxt在编译完毕之后,入口文件应该是在.nuxt文件夹里面,具体是哪个文件呢,这个我们可以在官网找到答案nuxt使用pm2
  2. 第二个问题是,我执行npm start这个指令的时候,可能有两种情况,第一种是灰度测试,第二种是生产环境。我该怎么设置环境变量呢。
    首先我们先要明确一个东西,不管是用在pm2配置文件,还是在package.json中配置的‘start’: cross-env NODE_ENV=prod nuxt start,都是nodejs运行时的process.env,是真正的process.env!,注意是.链接,这里是真正的process对象。
    而无论是使用vue-cli创建的spa,还是在nuxt中执行npm run build构建的项目,process.env都是通过webpack里面的definePlugin实现的,也就是直接把类似process.env.NODE_ENV这种变成一个常量,注入到项目里面,不然你想一想spa项目,渲染到客户端,怎么可能还有process呢。

所以nuxt的环境变量怎么配置,这里给出答案
package.json

{
  "scripts": {
    "dev": "cross-env NODE_ENV=development nuxt",
    "build:prod": "cross-env NODE_ENV=production nuxt build",
    "build:gray": "cross-env NODE_ENV=gray nuxt build",
    "start": "nuxt start"
  },
}

nuxt.config.js

export default {
 env: {
    NODE_ENV: process.env.NODE_ENV
  }
}

注意:nuxt.config.js中拿到的process是真正的process

然后就是在项目里面使用process.env.NODE_ENV

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值