likes
comments
collection
share

Node.js设置环境变量

作者站长头像
站长
· 阅读数 514

在使用Node.js进行开发时我们会将敏感的信息分为生产环境和开发环境进行文件形式的保存,那么如何设置环境变量成为了 一个问题。

在项目启动时我们可以使用cross-env插件进行设置,在项目启动时设置生产环境或者开发环境,例如:

 "scripts": {
    "dev:init": "node ./bin/dev",
    "dev": "cross-env ENV=development nodemon --watch ./dist ./dist/src/index.js",
    "build": "node ./bin/build",
    "start": "cross-env ENV=production nodemon ./src/index.js"
  }

使用cross-env将process.env.ENV设置为development或者production,这样在项目启动后我们可以在入口文件中动态选择读取生产环境或者开发环境的文件。

在入口文件我们需要安装dotenv插件进行处理,最好是尽早引入,这样在后面的文件中可以通过process.env进行变量的使用。

Node.js设置环境变量

//环境变量
import dotenv from "dotenv";
import path from "path";
dotenv.config({
  path: path.join(__dirname, `../.env.${process.env.ENV}`), // 配置文件路径
  encoding: "utf8", // 编码方式,默认utf8
  debug: false, // 是否开启debug,默认false
}).parsed;

例如,生产环境的数据库信息和开发环境的数据库信息分开保存

import { Sequelize } from "sequelize";

const sequelize = new Sequelize(
  "blog",
  process.env.DB_MYSQL_USER + "",
  process.env.DB_MYSQL_PASSWORD,
  {
    host: process.env.DB_MYSQL_HOST + "",
    dialect: "mysql",
    port: process.env.DB_MYSQL_PORT ? +(process.env.DB_MYSQL_PORT as string) : 3306,
    timezone: "+08:00",
    pool: {
      max: 5,
      min: 0,
      idle: 1000,
    },
    dialectOptions: {
      dateStrings: true,
      typeCast: true,
    },
  }
);
export default sequelize;
文件结构这样设置即可

Node.js设置环境变量

最后:不要忘了将生产环境的存储文件填写在.gitignore里面!!!