gpt4 book ai didi

node.js - 由于方言对象对象不支持错误,Sequelize 迁移失败

转载 作者:行者123 更新时间:2023-12-03 22:39:42 25 4
gpt4 key购买 nike

背景

我正在创建一个样板 express 应用程序。我已经使用 pg 和 sequelize 配置了数据库连接。当我添加 cli 并尝试运行 sequlize db:migrate 时,出现此错误,

ERROR: The dialect [object Object] is not supported. Supported dialects: mssql, mysql, postgres, and sqlite.



复制

生成一个新的快速应用程序。安装 pg、pg-hstore、sequelize 和 sequelize-cli。

运行 sequelize init

将 config.js 文件添加到从 sequelize init 创建的/config 路径。

在 config.js 文件中创建连接。

更新由 sequelize-cli 创建的 config.json 文件。

运行 sequelize db:migrate
示例

/config/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/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"
}
}

问题

我希望初始迁移能够运行,但会出现错误,

ERROR: The dialect [object Object] is not supported. Supported dialects: mssql, mysql, postgres, and 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 发布了主要重写,那么添加方言以便运行迁移的正确方法是什么?

重要的是要注意我的连接工作正常。我可以毫无问题地查询数据库,只有 sequelize-cli 在运行迁移时不起作用。

最佳答案

我遇到了同样的问题。有几件事你需要改变。首先,我不确定你为什么有 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
}
});

这几行代码是用于 Node 服务器访问db,而不是用于sequlize-cli迁移。您需要完全遵循 sequelize-cli 指令。这是链接: instruction

我的代码: 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 完美配合。

关于node.js - 由于方言对象对象不支持错误,Sequelize 迁移失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51177425/

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