When running any sequelize-cli command from the Terminal, you may encounter an error saying Unable to resolve sequelize package.
Here’s an example of the error:
$ npx sequelize-cli init Unable to resolve sequelize package in ...
This error happens because sequelize-cli requires the sequelize package to run.
To resolve this error, you need to install sequelize package locally in your project with the following command:
npm install sequelize
Once the sequelize package is installed, you may run the sequelize-cli command again.
The sequelize package is not bundled together with the CLI tool because you might use a different version of sequelize in your actual JavaScript project.
Bundling sequelize with sequelize-cli will cause you unable to choose which version of sequelize to use in your project.
Note that when you run sequelize-cli commands using npx, the sequelize package must be installed locally in your JavaScript project.
Installing sequelize globally on your computer will still trigger the same error:
$ npm install -g sequelize $ npx sequelize-cli --version Unable to resolve sequelize package in ...
When you install sequelize globally with -g flag, you also need to install sequelize-cli globally:
Only then you can run the sequelize-cli commands.
When you install sequelize package both globally and locally, sequelize-cli will use the global package instead of the local one.
You can test this by calling sequelize-cli --version from the command line:
$ npm install sequelize@4.44.4 $ sequelize-cli --version Sequelize CLI [Node: 16.13.0, CLI: 6.3.0, ORM: 6.12.5] 6.3.0
In the output above, the ORM version is the sequelize package version used by sequelize-cli.
Even though I’ve installed sequelize@4.44.4 locally, the sequelize-cli package still uses the globally installed sequelize@6.12.5.
Using a different version of sequelize for the CLI may cause the CLI to generate code that is deprecated and cannot be run by the sequelize used in your JavaScript .
This is why you are recommended to install sequelize package locally in your project and not globally. It ensures your CLI tool and web project use the same version of the package.