gpt4 book ai didi

node.js - Sequelize Migrate 无法识别 Dotenv

转载 作者:行者123 更新时间:2023-12-03 22:17:04 24 4
gpt4 key购买 nike

当我直接指定数据库名称、用户和密码时,我可以运行 migrate 命令。但是当我提供 env 变量/值时。它说没有选择数据库。我已经安装了 npm i dotenv

npx sequelize-cli db:migrate

dotenv 是必需的。
require('dotenv').config();
module.exports = {
development: {
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
dialect: 'mysql',
logging: false
},
test: {
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
host: process.env.DB_HOST,
dialect: 'mysql',
logging: false
},
production: {
use_env_variable: 'DATABASE_URL'
}
};

因此,我在 .env 文件中有以下内容:
DB_USER=root
DB_PASS=
DB_NAME=road_rescue_dev
DB_HOST=127.0.0.1

这有效
development: {
username: "root",
password: "",
database: road_rescue_dev,
host: process.env.DB_HOST,
dialect: 'mysql',
logging: false
},

最佳答案

我之前也遇到过同样的问题。
我发现我必须

  • require('dotenv').config() 在配置文件中(就像你做的那样)
  • 在根目录下设置 .sequelizerc 如下
  • 将 .sequelie 文件设置为从根目录
  • 指向配置、迁移、模型、种子目录
  • 并且您应该从根目录运行 npx seuqlie-cli db:migrate

  • 出于某种原因,如果我从 sequleize 目录运行 npx seuqlie-cli db:migrate,它不会读取 dotenv 变量。
    我仍在弄清楚原因,但它有效
    这是我的目录看起来像
    enter image description here
    我的 .sequelizerc 文件
    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')
    }
    还发布了关于这个的问题
    Sequelize migration doesnot read dotenv variable if I don't run it from root directory. why?

    关于node.js - Sequelize Migrate 无法识别 Dotenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61984481/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com