vue老項目升級vue-cli3.0問題總結【轉(zhuǎn)發(fā)】

升級步驟
1齐苛、 刪除原vue-cli并安裝vue-cli3.0
2怔匣、刪除新項目中src下的內(nèi)容稚伍,把原項目中src目錄覆蓋到新項目中
3劲够、把router從目錄文件夾改為文件,src/router/index.js提高一層變成src/router.js
4煤辨、 我的項目中src已經(jīng)分為了views和components所以無需修改称鳞,如果不是這個結構需要自己區(qū)分下
5纤壁、將原項目的index.html及favicon.ico覆蓋到新項目的public中
6雅镊、 將原項目的static文件夾拷貝到新項目的public中
7襟雷、 修改package.json文件,保持和原有項目一致即可
8仁烹、 創(chuàng)建并配置vue.config.js文件

刪除命令:

npm uninstall vue-cli -g

安裝@vue/cli命令:

npm install -g @vue/cli

我在這里省略安裝流程耸弄,掘金上已經(jīng)有很多文章了,下面說下會遇到的問題:

1卓缰、找不到vue文件

CMD中的報錯

These dependencies were not found:* @/views/index/index in ./src/router.js* @/views/index/otherIndex in ./src/router.jsTo install them, you can run: npm install --save @/views/index/index @/views/index/other

頁面上的報錯

./src/router.jsModule not found:Error: Can't resolve '@/views/index/index' in 'D:\VUE\haigui-proxy\src'
這種報錯是說明文件路徑錯誤沒有找到文件计呈,因為在原項目中設置了“@”也就是alias(別名),也有可能在原項目中設置了extensions(可以省略擴展名)僚饭,所以需要在新項目的vue.config.js中設置如下內(nèi)容:

const path = require('path'); // vue.config.js頂部const resolve = (dir) => path.join(__dirname, dir);module.exports = {  configureWebpack: config => {    Object.assign(config, {      resolve: {        extensions: ['.js', '.vue', '.json'], // 可以省略后綴名        alias: { // 別名,在require的時候震叮,可以使用這些別名胧砰,來縮短路徑的長度          '@': path.resolve(__dirname, './src'),          '@c': path.resolve(__dirname, './src/components')        }      }    });  }}

2鳍鸵、找不到image圖片

Module not found:Error: Can't resolve '../../../static/image/avatar_gray.jpg' in 'D:\VUE\haigui-proxy\src\views\index'

當把原項目的src和static拷貝到新項目后,就會出現(xiàn)圖片路徑不對的問題尉间,網(wǎng)上很多有關vue-cli3.0配置的文章都說的是把原項目的static直接拷貝到新項目的public中偿乖,其實這是不對,官方給出的原因是:

任何放置在 public 文件夾的靜態(tài)資源都會被簡單的復制哲嘲,而不經(jīng)過 webpack贪薪。需要通過絕對路徑來引用它們。

例如眠副,目錄為public/static/image画切,image里面存放各種圖片:

引入圖片logo.png:

<img src="/static/image/logo.png" > 

在 css 中 設置背景圖片:

.bg {  background: url('/satic/image/bg.jpg');}

注意:

public ****目錄提供的是一個應急手段,當你通過絕對路徑引用它時囱怕,留意應用將會部署到哪里霍弹。如果你的應用沒有部署在域名的根部毫别,那么你需要為你的 URL 配置 publicPath 前綴。

何時使用 public 文件夾

  • 你需要在構建輸出中指定一個文件的名字典格。
  • 你有上千個圖片岛宦,需要動態(tài)引用它們的路徑。
  • 有些庫可能和 webpack 不兼容耍缴,這時你除了將其用一個獨立的 標簽引入沒有別的選擇砾肺。

通過 webpack 的處理好處:

  • 腳本和樣式表會被壓縮且打包在一起,從而避免額外的網(wǎng)絡請求防嗡。
  • 文件丟失會直接在編譯時報錯变汪,而不是到了用戶端才產(chǎn)生 404 錯誤。
  • 最終生成的文件名包含了內(nèi)容哈希蚁趁,因此你不必擔心瀏覽器會緩存它們的老版本疫衩。
  • public 目錄提供的是一個應急手段,當你通過絕對路徑引用它時荣德,留意應用將會部署到哪里闷煤。

assets****文件夾就是用來放置經(jīng)過webpack處理的資源的

需要使用相對路徑引入:

<!-- 具體根據(jù)目錄結構來 --><img src="../assets/images/logo-black.png">

img動態(tài)路徑:

<img :src="imgurl">data () {  return {        imgurl: require("../assets/images/gou.png")    }}

css 背景圖:

.login-wrapper {  background: url('../../assets/images/bg.jpg');}

參考:官方解釋

3、scss全局變量的配置

Module build failed (from ./node_modules/sass-loader/lib/loader.js):Undefined variable.  955 │        border-right: 1px solid $borderColor;                            ^^^^^^^^^^^^root stylesheet in D:\VUE\haigui-proxy\src\views\index\index.vue (line 955, column 33)

若原項目中使用了scss并且使用了全局變量涮瞻,需要在vue.config.js中重新配置鲤拿,并把全局變量文件放到src/assets/css目錄下

在原項目中需要在build/utils.js中進行配置

scss: generateLoaders('sass').concat(  {    loader: 'sass-resources-loader',    options: {      resources: path.resolve(__dirname, '../src/assets/css/haigui-variable.scss')    }  })

新項目中就簡單的多署咽,直接編輯vue.config.js近顷,加入一節(jié)內(nèi)容即可:

css: {  loaderOptions: {    sass: {      // @/ 是 src/ 的別名 ~是必須有要加的      data: '@import "~@/assets/css/haigui-variable";'      // 如果沒有設置別名可以這么寫      // data: '@import "./src/assets/css/haigui-variable";'    }  }}

4、runtime-only

You are using the runtime-only build of Vue where the template compiler is notavailable. Either pre-compile the templates into render functions, or use thecompiler-included build.

原因:vue有兩種形式的代碼 compiler(模板)模式和runtime模式(運行時)宁否,vue模塊的package.json的main字段默認為runtime模式窒升, 指向了"dist/vue.runtime.common.js"位置。

這是vue升級到2.0之后就有的特點慕匠。

而在main.js文件中饱须,初始化vue卻是這么寫的,這種形式為compiler模式的台谊,所以就會出現(xiàn)上面的錯誤信息蓉媳。

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

解決辦法:

方法一:將main.js中的代碼修改如下就可以

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

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

這也是第二種解決辦法:因為之前我們的webpack配置文件里有個別名配置,具體如下

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

也就是說盐须,import Vue from ‘vue’ 這行代碼被解析為 import Vue from ‘vue/dist/vue.esm.js’玩荠,直接指定了文件的位置,沒有使用main字段默認的文件位置。

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

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

既然到了這里就會想到第三中解決方法,那就是在引用vue時眼溶,直接寫成如下即可

import Vue from 'vue/dist/vue.esm.js'
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悠砚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子堂飞,更是在濱河造成了極大的恐慌灌旧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绰筛,死亡現(xiàn)場離奇詭異枢泰,居然都是意外死亡,警方通過查閱死者的電腦和手機铝噩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門衡蚂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人骏庸,你說我怎么就攤上這事毛甲。” “怎么了具被?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵玻募,是天一觀的道長。 經(jīng)常有香客問我一姿,道長七咧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任叮叹,我火速辦了婚禮艾栋,結果婚禮上,老公的妹妹穿的比我還像新娘蛉顽。我一直安慰自己蝗砾,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布蜂林。 她就那樣靜靜地躺著遥诉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪噪叙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天霉翔,我揣著相機與錄音睁蕾,去河邊找鬼。 笑死,一個胖子當著我的面吹牛子眶,可吹牛的內(nèi)容都是我干的瀑凝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼臭杰,長吁一口氣:“原來是場噩夢啊……” “哼粤咪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渴杆,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寥枝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后磁奖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體囊拜,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年比搭,在試婚紗的時候發(fā)現(xiàn)自己被綠了冠跷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡身诺,死狀恐怖蜜托,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情霉赡,我是刑警寧澤盗冷,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站同廉,受9級特大地震影響仪糖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迫肖,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一锅劝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蟆湖,春花似錦故爵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伦仍,卻和暖如春结窘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背充蓝。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工隧枫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喉磁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓官脓,卻偏偏與公主長得像协怒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卑笨,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355