質問: railsにwebpackを用いてvue.jsを入れようとしているのですが下記のエラーが出ます。 ``` vue.runtime.esm.js:574 [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build. (found in ) ``` この記事で見たところおそらく限定ビルドになっているためだと思われるのですが完全ビルドに変更するために ``` config/webpack/shared.jsにaliasを追加すれば解決する。 ``` と書いているのですがconfig/webpack/shared.jsが見当たらないです。versionは下記です。 Rails 5.1.4 webpack 3.10.0 config/webpack/shared.jsは作成するものなんでしょうか?もしくは完全ビルドを設定する方法は他にあるのでしょうか?
回答: 該当のコード内で、 ``` import Vue from 'vue'; ``` としている部分を ``` import Vue from 'vue/dist/vue.esm'; ``` とすれば解消すると思います。 Webpackerが自動生成するhello_vue.jsによると、 `$mount(要素ID)`以外でVueのコンポーネントを使う場合は、`vue/dist/vue.esm`の方を使う必要があるように読み取れます。 `config/webpack/shared.js`は必ずしも必要ではありません。 追記(2018/01/05) config/webpack/shared.js について こちらについては、 Webpacker 2系でデフォルトで生成される設定ファイルだったようです。 各バージョンで、自動生成されるconfigファイルは下記の通りとなります。 2系 => 3系 => Webpackerは、3系からWebpackの設定をYAMLに隠蔽して、JavaScriptを意識せずに使えるようにする大きな変更が加わっているので、 shared.jsに触れている記事は、情報が古い可能性が高く、あまり参考にされない方が良いかも知れません。 ただし、development.jsとproduction.jsの間で共通で使う設定について、 shared.jsと言うファイルに切り出して読み込むようにするのはありだと思います。(必ずしも必要ではないと言ったのは、こちらの意図でした) Webpackerの設定ファイルの使い方に関しては、公式のドキュメントに様々なパターンが紹介されているので、こちらを参考にしていただければと思います。 vue/dist/vue.esm について ファイルの実体としては、プロジェクト配下の、 node_modules/vue/dist/vue.esm.js を探していただければ見つかると思います。 Webpackのバンドル対象のスクリプト中でimport文を使用した場合、 プロジェクトのpackage.jsonに書かれたモジュール情報を元に、 node_modulesディレクトリ配下のパッケージを探索しに行きます。 `import Vue from 'vue';` とした時は、 node_modules/vue/package.jsonで"main"として指定されている、 node_modules/vue/dist/vue.runtime.common.js がデフォルトで読み込まれます。 一方、 `import Vue from 'vue/dist/vue.esm';` とした場合は、 読み込むファイルを明示的に示しているので、 指定のパスから読み込まれます。 詳しくは、 node_modules => Node.jsのモジュールシステム(CommonJS) import / export => ES2015のモジュールシステム / Webpack をそれぞれ調べていただければと思います。 いくつかリンクを貼っておきます Webpackの入門記事 => Node.jsの入門記事 => ES2015のmodulesについて ・import => ・export =>