NodeJS 20 开始,默认支持 .env
文件。
基于 CommonJS
建议目录结构为
|config
|--default.js
|--dev.js
|--prod.js
|--index.js
内容分别如下:
// default.js
module.exports = {
mysql: {
host: "",
port: "",
user: "sofc",
password: "sofc123",
database: "sofc_nplatform",
},
mysql_tables: {
user: "user_user",
ownedFileView: "view_file_owned",
file: "file_file",
},
};
// dev.js
let config = require("./default");
config.host = "10.12.101.19";
config.port = "5005";
module.exports = Object.freeze(config);
// index.js
module.exports = require(`./${process.env.NODE_ENV}.js`);
package.json 配置如下
npm install cross-env
{
"scripts": {
"start": "cross-env NODE_ENV=\"dev\" node web.js
}
}
基于 ES Module
使用 ts-node
运行代码,使用 dotenv
加载配置文件,文件结构和内容如下
// package.json
{
"scripts": {
"start": "cross-env NODE_ENV=\"test\" ts-node src/index.ts",
"debug": "cross-env NODE_ENV=\"dev\" ts-node src/index.ts"
}
}
// config/index.ts
import * as dotenv from 'dotenv';
import * as MinIO from 'minio';
import path from 'path';
dotenv.config({ path: path.join(__dirname, `.env.${process.env.NODE_ENV}`) });
const minioConfig: MinIO.ClientOptions = {
endPoint: process.env.minIOEndPoint!,
port: +(process.env.minIOPort ?? 0),
accessKey: 'frontend',
secretKey: 'Frontend123456',
useSSL: false,
};
const config = {
minIO: minioConfig,
};
export default config;
// config/.env.dev
minIOEndPoint="127.0.0.1"
minIOPort=9000