如果我不 运行 从根目录读取 dotenv 变量,则 Sequelize 迁移不会读取它。为什么?

Sequelize migration doesnot read dotenv variable if I don't run it from root directory. why?

这就是我所做的

  1. require('dotenv').config() 在配置文件中
  2. 在根目录中设置.sequelizerc,如下所示
  3. 设置.sequelie文件指向根目录下的config、migrations、models、seeds目录
  4. 运行 npx seuqlie-cli db:migrate 形成根目录。有用!
  5. 运行 npx seuqlie-cli db:migrate 形成续集目录。它不读取 dotenv 变量并带有 connect ECONNREFUSED 127.0.0.1:3306

我想知道 4 和 5 之间有什么区别..?

这是我的目录

我的 .sequlizerc 文件

const path = require('path')

module.exports={
    config: path.resolve('src/sequelize/config','config.js'),
    'migrations-path': path.resolve('src/sequelize/migrations'),
    'seeders-path': path.resolve('src/sequelize/seeders'),
    'models-path': path.resolve('src/sequelize/models')
}

和我的配置文件

require("dotenv").config();

module.exports = {
  development: {
    username: process.env.DEV_DATABASE_USER_NAME,
    password: process.env.DEV_DATABASE_PASSWORD,
    database: process.env.DEV_DATABASE_NAME,
    host: process.env.DEV_DATABASE_HOST,
    dialect: "mysql",
    charset: "utf8",
    collate: "utf8_general_ci",
    operatorsAliases: false,
    define: {
      underscored: true
    }
  },
...
}

您始终可以将路径 属性 用于 dotenv,因此它不限于已调用的文件夹。

dotenv.config({ path: `${process.cwd()}/.env`})