Sequelize: Dialect needs to be explicitly supplied as of v4.0.0

80 Views Asked by At

i'm using nestjs/sequelize/postgres i initiated my db and passed it as provider to my database module,i explicitly supplied dialect and used

NODE_ENV= development

in my .env file,but i still get the same error

dotenv.config();
export const databaseProviders = [{
provide: "SEQUELIZE",
useFactory: async () => {
    let config;
    switch (process.env.NODE_ENV) {
    case development:
       config = databaseConfig.development;
       break;
    case TEST:
       config = databaseConfig.test;
       break;
    case PRODUCTION:
       config = databaseConfig.production;
       break;
    default:
       config = databaseConfig.development;
    }
    const sequelize = new Sequelize(config);
    sequelize.addModels([foo,bar]);
    await sequelize.sync();
    return sequelize;
},
}];

and i'm reading my configs from .env file :

export const databaseConfig: IDatabaseConfig = {
    development: {
        username: process.env.DB_USER,
        password: process.env.DB_PASS,
        database: process.env.DB_NAME_DEVELOPMENT,
        host: process.env.DB_HOST,
        port: process.env.DB_PORT,
        dialect: process.env.DB_DIALECT,
    },
    test: {
        username: process.env.DB_USER,
        password: process.env.DB_PASS,
        database: process.env.DB_NAME_TEST,
        host: process.env.DB_HOST,
        port: process.env.DB_PORT,
        dialect: process.env.DB_DIALECT,
    },
    production: {
        username: process.env.DB_USER,
        password: process.env.DB_PASS,
        database: process.env.DB_NAME_PRODUCTION,
        host: process.env.DB_HOST,
        dialect: process.env.DB_DIALECT,
    },
};

.env file :

NODE_ENV= development

DB_HOST=localhost
DB_PORT=5432
DB_USER=user
DB_PASS=pass
DB_DIALECT=postgres
DB_NAME_TEST=test_database_name
DB_NAME_DEVELOPMENT=development_database_name
DB_NAME_PRODUCTION=production_database_name
0

There are 0 best solutions below