You are using the runtime-only build of Vue where the template compiler is not available. Either pre

在升級(jí)腳手架到vue-cli3.0版本的時(shí)候出現(xiàn)了這個(gè)報(bào)錯(cuò):

[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.

我在這里大概說一下出現(xiàn)這個(gè)報(bào)錯(cuò)的原因在哪里和解決辦法

原因
vue有兩種形式的代碼 compiler(模板)模式和runtime模式(運(yùn)行時(shí))蒿秦,vue模塊的package.json的main字段默認(rèn)為runtime模式秆乳, 指向了"dist/vue.runtime.common.js"位置暴备。

這是vue升級(jí)到2.0之后就有的特點(diǎn)苟翻。

而我的main.js文件中窥淆,初始化vue卻是這么寫的续捂,這種形式為compiler模式的钮追,所以就會(huì)出現(xiàn)上面的錯(cuò)誤信息

// compiler
new Vue({
  el: '#app',
  router: router,
  store: store,
  template: '<App/>',
  components: { App }
})

解決辦法
將main.js中的代碼修改如下就可以

//runtime

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app")

到這里我們的問題還沒完痹升,那為什么之前是沒問題的,之前vue版本也是2.x的呀?

這也是我要說的第二種解決辦法

因?yàn)橹拔覀兊膚ebpack配置文件里有個(gè)別名配置横媚,具體如下

resolve: {
    alias: {
        'vue$': 'vue/dist/vue.esm.js' //內(nèi)部為正則表達(dá)式  vue結(jié)尾的
    }
}

也就是說仿滔,import Vue from ‘vue’ 這行代碼被解析為 import Vue from ‘vue/dist/vue.esm.js’,直接指定了文件的位置郑临,沒有使用main字段默認(rèn)的文件位置

所以第二種解決方法就是,在vue.config.js文件里加上webpack的如下配置即可屑宠,

configureWebpack: {
    resolve: {
      alias: {
        'vue$': 'vue/dist/vue.esm.js' 
      }
    }

既然到了這里我想很多人也會(huì)想到第三中解決方法厢洞,那就是在引用vue時(shí),直接寫成如下即可

import Vue from 'vue/dist/vue.esm.js'

總結(jié)
遇到問題之后不是說解決了問題就完事了典奉,更重要的是要思考 – 為什么躺翻?,原因是啥卫玖?要理解而不是死記公你,只有這樣你才能得到很大的提升!


原因分析:
在項(xiàng)目配置的時(shí)候假瞬,默認(rèn) npm 包導(dǎo)出的是運(yùn)行時(shí)構(gòu)建陕靠,即 runtime 版本迂尝,不支持編譯 template 模板。

vue 在初始化項(xiàng)目配置的時(shí)候剪芥,有兩個(gè)運(yùn)行環(huán)境配置的版本:Compiler 版本垄开、Runtime 版本。

其主要區(qū)別在于:

Compiler 版本:
可以對(duì) template 模板內(nèi)容進(jìn)行編譯(包括字符串模板和可以綁定的 html 對(duì)象作為模板)税肪,例如:

new Vue({
  el: "#box",
  template: "<div>{{msg}}</div>",
  data: {
    msg: "hello"
  }
});

Runtime 版本:
使用 vue-loader 加載.vue 文件(組件文件)時(shí)溉躲,webpack 在打包過程中對(duì)模板進(jìn)行了渲染。

解決方法
修改配置文件中的 vue 引用

一益兄、 vue cli 2.x
找到 webpack.base.conf.js 文件锻梳,修改以下配置:

在 webpack.base.conf.js 配置文件中多加了一段代碼,將 vue/dist/ package.json 配置文件的"main": "dist/vue.runtime.common.js",改為引用代碼中的引用 vue/dist.vue.esm.js 文件偏塞,意思就是說 webpack.base.conf.js 這個(gè)文件已經(jīng)將 vue/dist.package.json 的錯(cuò)誤引用糾正成 vue/dist.vue.esm.js

// ...
const config = {
  // ...
  resolve: {
    extensions: [".js", ".vue", ".json"],
    alias: {
      vue$: "vue/dist/vue.esm.js",
      "@": resolve("src")
    }
  }
};

二唱蒸、 vue cli 3.x
修改項(xiàng)目根目錄中的配置文件:vue.config.js,具體代碼如下:

修改 vue_cli3.0 的配置文件灸叼,添加 配置文件:vue.config.js 在項(xiàng)目的根目錄下,目的是修改在引入 vue 時(shí)神汹,不要采用 runtime 形式的文件,而采用 dist/vue.esm.js 形式文件

// ...
 
module.exports = {
  // ...
 
  configureWebpack: config => {
    config.resolve = {
      extensions: [".js", ".vue", ".json", ".css"],
      alias: {
        vue$: "vue/dist/vue.esm.js",
        "@": resolve("src")
      }
    };
  }
 
  // ...
};

【劃重點(diǎn)】

發(fā)現(xiàn)了一個(gè)新的方法,只需要添加一行代碼的配置古今,即可實(shí)現(xiàn)支持template編譯:

// vue.config.js

module.exports = {
  runtimeCompiler: true,
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末屁魏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子捉腥,更是在濱河造成了極大的恐慌氓拼,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抵碟,死亡現(xiàn)場(chǎng)離奇詭異桃漾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拟逮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門撬统,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敦迄,你說我怎么就攤上這事恋追。” “怎么了罚屋?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵苦囱,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我脾猛,道長(zhǎng)撕彤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任猛拴,我火速辦了婚禮喉刘,結(jié)果婚禮上瞧柔,老公的妹妹穿的比我還像新娘。我一直安慰自己睦裳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布撼唾。 她就那樣靜靜地躺著廉邑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倒谷。 梳的紋絲不亂的頭發(fā)上蛛蒙,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音渤愁,去河邊找鬼牵祟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抖格,可吹牛的內(nèi)容都是我干的诺苹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼雹拄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼收奔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起滓玖,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤坪哄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后势篡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩肌,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年禁悠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了念祭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绷蹲,死狀恐怖棒卷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祝钢,我是刑警寧澤比规,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站拦英,受9級(jí)特大地震影響蜒什,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疤估,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一灾常、第九天 我趴在偏房一處隱蔽的房頂上張望霎冯。 院中可真熱鬧,春花似錦钞瀑、人聲如沸沈撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缠俺。三九已至,卻和暖如春贷岸,著一層夾襖步出監(jiān)牢的瞬間壹士,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工偿警, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留躏救,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓螟蒸,卻偏偏與公主長(zhǎng)得像盒使,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尿庐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容