実行コマンド
sequelize model:create --name goal --underscored --attributes goalname:string
sequelizeでgoalというモデルを作成しようとしている。
エラー内容
Unable to resolve sequelize package in
意味
sequelizeがうまく開かないみたいだけど
問題点がありそうなところを考える
以下の1番目から順番に思いついたため、順番に対処しました。
結果的に3番目の「実行ディレクトリの誤り」だっただけですが、そこに辿り着くまでに手順をまとめておこうと思います。
1. confing.jsonの表記ミス
2. sequelizeのインストールができていない
3. 実行ディレクトリの誤り
1. confing.jsonの表記ミスの可能性
vimなどのエディタでnode/config/config.jsonを確認。
vim node/config/config.json
1 {
2 "development": {
3 "username": "root",
4 "password": null,
5 "database": "database_development",
6 "host": "127.0.0.1",
7 "dialect": "sqlite",
8 "storage": "./data/development.sqlite3",
9 "operatorsAliases": false
10 },
11 "test": {
12 "username": "root",
13 "password": null,
14 "database": "database_test",
15 "host": "127.0.0.1",
16 "dialect": "sqlite",
17 "storage": "./data/test.sqlite3",
18 "operatorsAliases": false
19 },
20 "production": {
21 "username": "root",
22 "password": null,
23 "database": "database_production",
24 "host": "127.0.0.1",
25 "dialect": "sqlite",
26 "storage": "./data/production.sqlite3",
27 "operatorsAliases": false
28 }
確認したが問題が確認できなかった。
2. sequelizeのインストールができていない
この時点で自分はパニック
何をして良いかわからないが、もしかしてインストールがうまくいってなかったのではと思い、コンテナにログインし、sequelize --versionをおこうが、command not foundと怒られてしまったため、とりあえず再インストールを行うことにした。
早速コンテナにログインし実行してみる
docker exec -it serverapp /bin/bash
npm install --save sequelize

インストールの確認
sequelize --version

実行コマンド
sequelize db:migrate
エラー内容
ERROR: Please install mysql2 package manually
意味
Mysql2を手動でインストールして
解決
まずSQliteを使用するのにMySQLをインストールしてなのか疑問だったが、とりあえずMysql2をインストールしてみることにした。
実行コマンド
sequelize db:migrate
エラー内容
connect ECONNREFUSED 127.0.0.1:3306
意味
Mysql2を手動でインストールして
設定ファイルがsqliteになっているのにmysqlが必要なのが意味不明すぎて混乱した。
3. 実行ディレクトリの誤り
最終的にはこれが原因でした。
root/nodeで実行しないといけないものをroot直下で実行していました。
正しくは
sequelize model:create --name goal --underscored --attributes goalname:string
これで実行し無事マイグレートを行えました。
まとめ
今回のエラーでMysqlやsqliteについて知るきっかけになった良かったと思いますが、結構時間がかかってしまったので、今後はディレクトリ構造も注意してみたいと思います。