nuxt3中的环境变量process.env
自我理解,nuxt3中build打包之前(也就是本地开发)中的process.env和打包之后的process.env根本是不同的东西;
上图两张: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