Миграция Sequelize не читает переменную dotenv, если я не запустил ее из каталога root. Зачем? - PullRequest
0 голосов
/ 10 июля 2020

Это то, что я сделал

  1. require ('dotenv'). Config () в файле конфигурации
  2. set .sequelizer c в каталоге root, например ниже
  3. установить .sequel ie файл, чтобы указать конфигурацию, миграции, модели, каталог семян из root каталога
  4. run npx seuqlie-cli db:migrate form root каталога. Это работает!
  5. запустил npx seuqlie-cli db:migrate из каталога sequelize. Он не читает переменную dotenv и поставляется с connect ECONNREFUSED 127.0.0.1:3306

, и я хочу знать, в чем разница между 4 и 5 ..?

это мой каталог выглядит введите описание изображения здесь

мой .sequlizer c файл

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
    }
  },
...
}

1 Ответ

0 голосов
/ 29 июля 2020

Вы всегда можете использовать свойство path для dotenv, чтобы оно не ограничивалось папкой, которая была вызвана.

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