Ошибка Sequelize переноса из-за объекта диалекта Ошибка объекта не поддерживается - PullRequest
0 голосов
/ 04 июля 2018

Фон

Я создаю шаблонное экспресс-приложение. Я настроил соединение с базой данных, используя pg и sequelize. Когда я добавляю cli и пытаюсь запустить sequlize db:migrate, я получаю эту ошибку,

ОШИБКА: диалект [объект объекта] не поддерживается. поддержанный диалекты: mssql, mysql, postgres и sqlite.

Репликация

Создание нового экспресс-приложения. Установите pg, pg-hstore, sequelize и sequelize-cli.

Выполнить sequelize init.

Добавьте файл config.js в путь / config, который был создан из sequelize init.

Создайте соединение в файле config.js.

Обновите файл config.json, созданный sequelize-cli.

Пробег sequelize db:migrate

Пример

/ конфигурации / config.js

const Sequelize = require('sequelize');
const { username, host, database, password, port } = require('../secrets/db');

const sequelize = new Sequelize(database, username, password, {
  host,
  port,
  dialect: 'postgres',
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

module.exports = sequelize;

/ конфигурации / config.js

{
  "development": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  },
  "test": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  },
  "production": {
    "username": "user",
    "password": "pass",
    "database": "db",
    "host": "host",
    "dialect": "postgres"
  }
}

Проблема

Я ожидаю запуска начальных миграций, но вместо этого получаю сообщение об ошибке,

ОШИБКА: диалект [объект объекта] не поддерживается. поддержанный диалекты: mssql, mysql, postgres и sqlite.

Версия

Dialect: postgres 
Dialect version: "pg":7.4.3 
Sequelize version: 4.38.0
Sequelize-Cli version: 4.0.0

Пакет Json

"pg": "^7.4.3",
"pg-hstore": "^2.3.2",
"sequelize": "^4.38.0"

Установлено глобально

npm install -g sequelize-cli

Вопрос

Теперь, когда основной переписанный текст был выпущен для продолжения, как правильно добавить диалект для запуска миграций?

Важно отметить, что мое соединение работает нормально. Я могу запросить базу данных без проблем, только sequelize-cli не будет работать при выполнении миграций.

1 Ответ

0 голосов
/ 17 июля 2019

я столкнулся с той же проблемой. Есть несколько вещей, которые вам нужно изменить. Во-первых, я не уверен, почему у вас был файл 2 config/config.js. я предположил, что второй файл config.json. причина этой проблемы в том, что

const sequelize = new Sequelize(database, username, password, {
  host,
  port,
  dialect: 'postgres',
  operatorsAliases: false,
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
});

эти строки кода используются для доступа к базе данных сервером узла, а не для перехода sequlize-cli. вам нужно точно следовать инструкции sequlize-cli. вот ссылка: инструкция

мой код: config/db.js

const {sequlize_cli} = require('../config.json');

module.exports = sequlize_cli;

config.json

{
    "sequlize_cli":{
        "development":{
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
        },
        "test": {
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
          },
          "production": {
            "username":"root",
            "password":"passowrd",
            "database":"monitor",
            "host":"127.0.0.1",
            "dialect": "postgres"
          }
    }
}

главное, что я предполагаю - экспортировать объект json напрямую, а не экспортировать объект sequelize. Кроме того, это только проблема с postges, я тестировал с MySQL, ваш код прекрасно работает с MySQL.

...