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)
Use this export NODE_ENV=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