node加载.env 、.env.development 、.env.production配置文件

文件的作用说明:(所有文件都在项目的根目录下)
【.env】设置公共的配置信息。
【.env.development 】设置开发环境的配置信息。
【.env.production】设置正式环境的配置信息。
【package.json】放置安装的包,与配置npm命令(启动node服务)。
【server.js】是node启动服务的入口文件。

【.env 文件内配置信息】

# 公共配置
APP_PLATFORM_NAME=后端的名称
# 开启单点登录
APP_SSO=false

【.env.development 文件内配置信息】

# 开发环境配置
NODE_ENV=development
API_BASE_URL=http://127.0.0.1:1111/

【.env.production文件内配置信息】

# 正式环境配置
NODE_ENV=production
API_BASE_URL=https://www.888.com/

========================================================================================
1、加载配置文件的方法一: (注意:Node.js 20.6 版本及以上才原生支持 .env 文件)
在【package.json】文件内配置:(注:同时加载两个配置,属性有冲突的,后面覆盖前面的)

{
    "scripts": {
        "server:dev":"node --env-file=.env --env-file=.env.development server.js",
        "server:prod":"node --env-file=.env --env-file=.env.production server.js"
    },
    "dependencies": {
        "axios": "^0.19.2",
        "express": "^4.17.1",
        "mysql": "^2.18.1"
    }
}

在【server.js】文件内

const http = require('http');
const https = require('https');
const fs = require('fs');
console.log('process.env.NODE_ENV:',process.env.NODE_ENV); //输出development或production
console.log('process.env.API_BASE_URL:',process.env.API_BASE_URL);//输出http://127.0.0.1:1111/或https://www.888.com/
//其它代码

========================================================================================
2、加载配置文件的方法二: (需要安装dotenv库【npm install dotenv -S-D】)
在【package.json】文件内配置:(注:命令后面的--mode=***作为参数传递。set可直接给process.env对象赋值。)

{
    "scripts": {
        "server:dev": "node ./server.js --mode=development",
        "server:prod": "node ./server.js --mode=production",
        "server:dev_set": "set NODE_ENV=development && nodemon ./server.js",
        "server:prod_set": "set NODE_ENV=production && nodemon ./server.js"
    },
    "dependencies": {
        "dotenv": "^17.2.0",
        "axios": "^0.19.2",
        "express": "^4.17.1",
        "mysql": "^2.18.1"
    }
}

在【server.js】文件内配置(注:同时加载两个配置,属性有冲突的,前面覆盖后面的)

const http = require('http');
const https = require('https');
const fs = require('fs');

let mode = (process.argv.find(item=>item.includes('--mode=')) || '').replace('--mode=', '');//方法一:获取命令参数
//let mode = process.env.NODE_ENV.trim();//方法二:获取【server:dev_set】命令直接赋值的参数
const dotenv = require('dotenv');//引入
dotenv.config({ path: `.env.${mode || 'development'}` });//前面的配置优先【.env.development】【.env.production】
dotenv.config({ path: '.env' })//引入.env配置文件(公共的配置文件)
// console.log('process.env:',process.env);

console.log('process.env.NODE_ENV:',process.env.NODE_ENV); //输出development或production
console.log('process.env.API_BASE_URL:',process.env.API_BASE_URL);//输出http://127.0.0.1:1111/或https://www.888.com/

//其它代码

========================================================================================

其它说明:
获取命令参数(数组):【process.argv】
环境类型:【process.env.NODE_ENV】
链接:【process.env.API_BASE_URL】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容