nuxt3中的环境变量process.env

951 阅读1分钟

nuxt3中的环境变量process.env

自我理解,nuxt3中build打包之前(也就是本地开发)中的process.env和打包之后的process.env根本是不同的东西;

image.png

image.png

上图两张:dotenv 把配的.env.*的配置注入到了process.env 中,开发环境使用process.env中没有任何问题;

然而打包部署到正式环境,pm2启动ecosystem.config.cjs后,项目中动态方法中使用process.env中之前配置环境变量没有了~~~~,所以这个process.env其实是node服务自身的,已经脱离了nuxt3,自我理解是这样的,不对请指正;

如果部署到正式环境需要在动态方法中用环境变量区分或者使用,可以在ecosystem.config.cjs配置启动指定环境

pm2 start ecosystem.config.cjs --env development

ecosystem.config.cjs文件

module.exports = {
  apps: [
    {
      name: 'tspc-ssr-pc',
      port: '3000',
      // exec_mode: 'cluster',
      // instances: '1',
      // args: '',
      script: './.output/server/index.mjs',
      // error_file: './.logs/ssr-mobile-error.log',
      // out_file: './.logs/ssr-mobile-out.log',
      // log_file: './.logs',
      // 设置追加日志而不是新建日志
      // merge_logs: true,
      // log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
      // max_memory_restart: '6G',
      env: {
        "DEFAULT_DYC": "dyc",
        "HOST":'127.0.0.1'
      },
      env_production: {
        NODE_ENV: 'production',
        KKC_API_SERVER_HOST: 'xxx',
      },
      env_development: {
        NODE_ENV: 'development',
        KKC_API_SERVER_HOST: 'xxx',
      },
    },
  ],
}
​

特别说明:我文中提到的动态方法其实可以理解为自定义的函数,在项目运行过程中process.env是pm2启动后的新的process.env