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

Issue Description

‘Error: Dialect needs to be explicitly supplied as of v4.0.0’ is thrown when initialising sequelize via a destructured property whilst running ‘npx sequelize-cli db:migrate’.

What are you doing?

I have a config.js which merges different sections of a config.json dependent on the environment so as to prevent repeated configurations, it exports the final, merged, configuration. Within the final configuration is a sub object of ‘dev’ called ‘database’.

Sequelize’s .sequelizerc is unable to process this as the config paramter expects a file path, not an object and thus is not using the ‘database’ object and instead is using the whole object. When trying to run ‘npx sequelize-cli db:migrate’ the error above is thrown.

If I change config.js to instead export ‘finalConfig.database’, ‘npx sequelize-cli db:migrate’ works without issue.

What do you expect to happen?

For ‘npx sequelize-cli db:migrate’ to migrate successfully.

What is actually happening?

An error is thrown.

Sequelize CLI [Node: 15.5.1, CLI: 6.2.0, ORM: 6.3.5]

Loaded configuration file "config\config.js".

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

Additional context

config/config.json

{
  "dev": {
    "database": {
      "name": "name",
      "host": "host",
      "username": "user",
      "password": "pass",
      "dialect": "postgres"
    }
  },
  "live": {
    "database": {
      "name": "name1",
      "username": "username1",
      "password": "password1"
    }
  }
}

Works config/config.js

const _ = require('lodash');
const config = require('./config.json');
const defaultConfig = config.dev;
const environment = process.env.NODE_ENV || 'dev';
const environmentConfig = config[environment];
const finalConfig = _.merge(defaultConfig, environmentConfig);

module.exports = finalConfig.database;

Does not work config/config.js

module.exports = finalConfig;

Environment

  • Sequelize version: 6.3.5
  • Node.js version: 15.5.1
  • Operating System: Windows 10

Issue Template Checklist

How does this problem relate to dialects?

  • I think this problem happens regardless of the dialect.
  • I think this problem happens only for the following dialect(s):
  • I don’t know, I was using postgres, with connector library version 8.5.1 and database version 11.6 (ElephantSQL)

Would you be willing to resolve this issue by submitting a Pull Request?

  • Yes, I have the time and I know how to start.
  • No, I don’t have the time, although I believe I could do it if I had the time…
  • Yes, I have the time but I don’t know how to start, I would need guidance.
  • No, I don’t have the time and I wouldn’t even know how to start.

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Comments: 22 (1 by maintainers)

Most upvoted comments

Use this export NODE_ENV=development

Hello, Does someone knows how to make the import version of this: "const dbConfig = require("../config/db.config")['development']" ??

Same issue

Basically in this issue Sequelize cannot find the environment on which it have to perform action. By default sequelize look for value of NODE_ENV like if you have set “development” in your NODE_ENV , sequelize will look for “development” in object define in config.js file. In your case set (in .env file) NODE_ENV=‘dev’ or NODE_ENV=“dev” if you want to configure dev write above in your .env file else set the required environment in NODE_ENV.

in .env file

NODE_ENV= development

in config.js

require(‘dotenv’).config() module.exports={ “development”: { “username”: process.env.DATABASE_USER, “password”: process.env.DATABASE_PASSWORD, “database”: process.env.DATABASE_NAME, “host”: process.env.DATABASE_HOST, “dialect”: ‘postgres’, }, }

Some news? I have the same issue when running with pm2. Running with npm start ou nodemon works fine. Some clue?

Hello, @Asharudheen-VNC , i have the same issue, where do I use your suggestion ?

Arquivo config.js { “development”: { “database”: { “name”: “name”, “host”: “host”, “username”: “user”, “password”: “pass”, “dialect”: “postgres” }, “dev”: { “database”: { “name”: “name”, “host”: “host”, “username”: “user”, “password”: “pass”, “dialect”: “postgres” } }, “live”: { “database”: { “name”: “name1”, “username”: “username1”, “password”: “password1” } } }

Arquivo .env NODE_ENV= development, “name”: “name”, “host”: “host”, “username”: “user”, “password”: “pass”, “dialect”: “postgres”

Hello, Does someone knows how to make the import version of this: "const dbConfig = require("../config/db.config")['development']" ??

Check project .env file if you are using environment variables, I forgot to set dialect after setting-up .env file properly its working fine

Making use of .sequelizerc file , which am currently having have not solved the problem. Thank you for making a pull request on this