vueコンパイルバージョンの導入に関する質問

1530 ワード

退勤して目を通すと一つの間違いにぶつかった.
[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.

エラープロンプトの説明と検索の結果、プロジェクトが導入したvueコンパイルバージョンが間違っていると結論しました.
ソリューション1
build/webpack.base.conf.jsは、vueのalias別名を次のように設定します.
resolve: {
     alias: {
       vue: 'vue/dist/vue.esm.js'
     }
    }

ソリューション2
src/mainを開きます.jsはVueオブジェクトの初期化を変更します.
new Vue({
  el: '#app',
  router,
  components: { App },
  template: ''
})

に改心
new Vue({
  el: '#app',
  router,
  render: h => h(App)
})

なぜなら、templateプロパティを使用するには、コンパイラ付きの完全版vueを導入する必要があるからです.esm.js
もしvueファイルで使用


export default {
  name:'name1',
  data() {
    return {};
  }
};

この形式でimportを用いて導入すると、完全版のvueは必要ない.esm.js、vue-loaderを使用する場合*.vueファイルは自動的にjsにプリコンパイルされます.
実はvuejsの公式サイトでは、異なる構築バージョンに対する解釈が明確に説明されています(https://cn.vuejs.org/v2/guide...)
その他の関連記事:8つのバージョンvueの違いを整理(https://segmentfault.com/a/11...)