Sequelize '方言需要从 v4.0.0 开始明确提供'

Posted

技术标签:

【中文标题】Sequelize \'方言需要从 v4.0.0 开始明确提供\'【英文标题】:Sequelize 'Dialect needs to be explicitly supplied as of v4.0.0'Sequelize '方言需要从 v4.0.0 开始明确提供' 【发布时间】:2018-07-02 00:25:53 【问题描述】:

我需要在 node.js 环境中运行第三方应用程序,但 Sequelize 抛出“方言需要从 v4.0.0 起显式提供” 我在这里Dialect needs to be explicitly supplied as of v4.0.0 找到了类似的主题,但“export NODE_ENV=development”不起作用,我找不到 Sequelize 配置文件。 我该如何解决这个错误?

代码如下:

const Sequelize = require('sequelize');

const scheme = require('./scheme');

const Op = Sequelize.Op;

const sequelize = new Sequelize(null, null, 

dialect: 'sqlite',
storage: 'db.sqlite3',

operatorsAliases:  $and: Op.and ,

logging: false
);

scheme(sequelize);
sequelize.sync();

module.exports.sequelize = sequelize;
module.exports.models = sequelize.models;

【问题讨论】:

【参考方案1】:

初始化sequelize时只需提供方言;

const sequelize = new Sequelize('database', 'username', 'password', 
  host: 'localhost',
  dialect: // pick one of 'mysql','sqlite','postgres','mssql',
);

【讨论】:

是的,你在方言的选项之前传递了两个参数。其中需要三个。看我的帖子【参考方案2】:

节点在配置文件中找不到要加载的环境。

你可以通过运行这个来轻松修复

 export NODE_ENV=development; npx sequelize db:migrate

这应该将运行它所需的环境导出到 NODE_ENV。

【讨论】:

【参考方案3】:

这对我有用:

'use strict';

const path = require('path');
const Sequelize = require('sequelize');
const db = ;

const DB = 'users';
const USER = 'user';
const PASSWORD = 'password';
const HOST = 'host';
const DIALECT = 'postgres';
const PORT = 5432;

const CONNECTION = new Sequelize(
    DB,
    USER, 
    PASSWORD, 
    
        host: HOST,
        dialect: DIALECT,
        port: PORT,
    
)

module.exports.CONNECTION = CONNECTION;

【讨论】:

【参考方案4】:

我想你已经解决了这个问题。但我面临同样的问题。 我的问题是由于 sequelize-cli 自动生成的配置文件的名称更改而发生的。所以我最终所做的是,我在项目根文件夹中创建了一个 .sequelizerc 文件,并包含以下内容。

const path = require('path');

module.exports = 
  'config': path.resolve('config', 'database.json'),
  'models-path': path.resolve('db', 'models'),
  'seeders-path': path.resolve('db', 'seeders'),
  'migrations-path': path.resolve('db', 'migrations')
;

确保根据项目的文件夹结构更改参数。 sequelize 文档页面上有全面的解释。 https://sequelize.org/master/manual/migrations.html

【讨论】:

以上是关于Sequelize '方言需要从 v4.0.0 开始明确提供'的主要内容,如果未能解决你的问题,请参考以下文章

续集方言错误

NodeJS/Sequelize/MySQL - 为啥需要 postgres 依赖项?

sequelize.query 原始查询

不创建带有 Sequelize 的外键

Immutable.js v4.0.0-rc.12 准备好投入生产了吗?

魔众文章系统 v4.0.0 升级ModStart,系统重构