文件的作用說(shuō)明:(所有文件都在項(xiàng)目的根目錄下)
【.env】設(shè)置公共的配置信息。
【.env.development 】設(shè)置開(kāi)發(fā)環(huán)境的配置信息。
【.env.production】設(shè)置正式環(huán)境的配置信息。
【package.json】放置安裝的包,與配置npm命令(啟動(dòng)node服務(wù))。
【server.js】是node啟動(dòng)服務(wù)的入口文件。
【.env 文件內(nèi)配置信息】
# 公共配置
APP_PLATFORM_NAME=后端的名稱
# 開(kāi)啟單點(diǎn)登錄
APP_SSO=false
【.env.development 文件內(nèi)配置信息】
# 開(kāi)發(fā)環(huán)境配置
NODE_ENV=development
API_BASE_URL=http://127.0.0.1:1111/
【.env.production文件內(nèi)配置信息】
# 正式環(huán)境配置
NODE_ENV=production
API_BASE_URL=https://www.888.com/
========================================================================================
1、加載配置文件的方法一: (注意:Node.js 20.6 版本及以上才原生支持 .env 文件)
在【package.json】文件內(nèi)配置:(注:同時(shí)加載兩個(gè)配置,屬性有沖突的,后面覆蓋前面的)
{
"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】文件內(nèi)
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庫(kù)【npm install dotenv -S-D】)
在【package.json】文件內(nèi)配置:(注:命令后面的--mode=***作為參數(shù)傳遞。set可直接給process.env對(duì)象賦值。)
{
"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】文件內(nèi)配置(注:同時(shí)加載兩個(gè)配置,屬性有沖突的,前面覆蓋后面的)
const http = require('http');
const https = require('https');
const fs = require('fs');
let mode = (process.argv.find(item=>item.includes('--mode=')) || '').replace('--mode=', '');//方法一:獲取命令參數(shù)
//let mode = process.env.NODE_ENV.trim();//方法二:獲取【server:dev_set】命令直接賦值的參數(shù)
const dotenv = require('dotenv');//引入
dotenv.config({ path: `.env.${mode || 'development'}` });//前面的配置優(yōu)先【.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/
//其它代碼
========================================================================================
其它說(shuō)明:
獲取命令參數(shù)(數(shù)組):【process.argv】
環(huán)境類型:【process.env.NODE_ENV】
鏈接:【process.env.API_BASE_URL】