はじめに
Rails+Vue.jsのSPAを本番環境(Heroku)にデプロイしようとしたときに、以下エラーが発生しました。
ModuleNotFoundError: Module not found: Error: Can’t resolve ‘vuetify’ in ...
いや、開発時はVuetify普通に使ってたしな…と思いつつ、こちらを解決した方法を残します。
環境
OS: macOS Catalina 10.15.1
結論:package.jsonでミス発見
【Before】
package.json
{
"name": "app_name",
"private": true,
"version": "0.1.0",
"dependencies": {
...
},
"devDependencies": {
"vuetify": "^2.1.15", //これがおかしい
"webpack-dev-server": "^3.10.1"
}
}
↓
【After】
package.json
{
"name": "app_name",
"private": true,
"version": "0.1.0",
"dependencies": {
...
"vuetify": "^2.1.15", //移動
},
"devDependencies": {
"webpack-dev-server": "^3.10.1"
}
}
理由
devDependencies
に記載されたパッケージは本番環境に反映されません。
【いまさらですが】package.jsonのdependenciesとdevDependencies - Qiita
{
"name": "app_name",
"dependencies": {
//どの環境でも使用するパッケージ(本番環境含む)
},
"devDependencies": {
//開発環境のみで使用するパッケージ
}
}
なぜdevDependencies
に入ってしまったのか
恐らく、yarn add
の時にミスしたと考えられます。
依存関係の管理 | Yarn
yarn add --devはdevDependenciesを追加します。
普通は
$ yarn add vuetify
でインストールしますが、
$ yarn add --dev vuetify
とインストール時にコマンドを誤ってしまったようです。
おわりに
最後まで読んで頂きありがとうございました
どなたかの参考になれば幸いです