當(dāng)前項(xiàng)目需要用vue重寫,由于Vue還是初學(xué),所以肯定會(huì)遇到一些問題,在這里記錄一下,方便查看。
vuex綁定到v-model提示
[Vue warn]: Computed property "productSeries" was assigned to but it has no setter.
描述: 將vuex中的數(shù)據(jù)直接拿出來并通過v-model綁定到頁(yè)面元素上,報(bào)錯(cuò)。原因是vuex類似redux,其數(shù)據(jù)只允許通過vuex提供的方法,action、mutation來更改。
解決: 思考這個(gè)數(shù)據(jù)節(jié)點(diǎn)是不是特別有必要放在vuex,如果不需要,則只綁定到當(dāng)前組件就行了,如果需要,則有兩種方法解決:1、在當(dāng)前組件的data中定義一個(gè)對(duì)象來接收store中的數(shù)據(jù);2、加入get和set方法。
P.S. vuex給我的感覺:數(shù)據(jù)能寫在當(dāng)前頁(yè)面就寫在當(dāng)前頁(yè)面,盡量少用vuex。不然又要寫get/set方法,又要考慮action/dispatch,感覺有點(diǎn)麻煩,不能突出vue雙向綁定的優(yōu)勢(shì)。
Vue-cli生成的項(xiàng)目在局域網(wǎng)調(diào)試的問題
描述: 在mac上面用vue-cli創(chuàng)建的項(xiàng)目,直接npm start打開調(diào)試,本機(jī)可以用localhost:8080打開,mac在局域網(wǎng)內(nèi)的地址為 192.168.43.102,然而我用一臺(tái)windows輸入 192.168.43.102:8080 卻打不開,感覺可能是vue-cli沒有默認(rèn)配置。
解決: 打開項(xiàng)目根目錄下的config/index.js,看到host這一行
host: 'localhost', // can be overwritten by process.env.HOST
恩,可以直接在node進(jìn)程寫HOST
遂打開根目錄下的package.json,修改start命令,添加一個(gè)HOST
"start": "npm run dev"
改成
"start": "HOST=0.0.0.0 npm run dev"
執(zhí)行npm start
問題解決
Vuex在IE11無法使用的問題
描述: 客戶需要兼容IE11,直接用IE11打開頁(yè)面,發(fā)現(xiàn)頁(yè)面空白,什么都沒顯示。
打開IE的控制臺(tái),出現(xiàn)了vuex的提示:
[vuex] vuex requires a Promise polyfill in this browser
看來是IE11不支持Promise
解決: 上github,搜到兩個(gè)相關(guān)的問題
https://github.com/vuejs-templates/webpack/issues/260
https://github.com/vuejs-templates/webpack/issues/474
尤大提示 解決方案就是引入babel-polyfill或者es6-promise
看了一下其他回復(fù),我選擇安裝es6-promise
npm install es6-promise
然后在main.js第一行引入
// 添加es6-promise以兼容IE
import 'es6-promise/auto';
import Vue from 'vue';
import App from './App';
import router from './router';
import store from './store';
// 其他內(nèi)容
問題解決
Cannot read property 'compilation' of undefined的問題
描述: 用vue-cli生成的一個(gè)項(xiàng)目,直接npm run build,報(bào)錯(cuò)
> tms-vue-ele@1.0.0 build /Users/jianghai/codes/tms-vue-ele
> node build/build.js
? building for production.../Users/jianghai/codes/tms-vue-ele/node_modules/last-call-webpack-plugin/src/index.js:170
compiler.hooks.compilation.tap(
^
TypeError: Cannot read property 'compilation' of undefined
at OptimizeCssAssetsWebpackPlugin.apply (/Users/jianghai/codes/tms-vue-ele/node_modules/last-call-webpack-plugin/src/index.js:170:20)
at Compiler.apply (/Users/jianghai/codes/tms-vue-ele/node_modules/tapable/lib/Tapable.js:375:16)
at webpack (/Users/jianghai/codes/tms-vue-ele/node_modules/webpack/lib/webpack.js:33:19)
at err (/Users/jianghai/codes/tms-vue-ele/build/build.js:19:3)
at next (/Users/jianghai/codes/tms-vue-ele/node_modules/rimraf/rimraf.js:75:7)
at CB (/Users/jianghai/codes/tms-vue-ele/node_modules/rimraf/rimraf.js:111:9)
at /Users/jianghai/codes/tms-vue-ele/node_modules/rimraf/rimraf.js:137:14
at FSReqWrap.oncomplete (fs.js:152:21)
解決: 根據(jù)提示,打算一層一層找,首先第一行
at OptimizeCssAssetsWebpackPlugin.apply (/Users/jianghai/codes/tms-vue-ele/node_modules/last-call-webpack-plugin/src/index.js:170:20)
可能是OptimizeCssAssetsWebpackPlugin這個(gè)方法的問題,首先上npm找到optimize-css-assets-webpack-plugin這個(gè)包
https://www.npmjs.com/package/optimize-css-assets-webpack-plugin
官方提示:
For webpack v3 or below please use optimize-css-assets-webpack-plugin@3.2.0. The optimize-css-assets-webpack-plugin@4.0.0 version and above supports webpack v4.
遂打開package.json,發(fā)現(xiàn)webpack版本3.6.0,optimize-css-assets-webpack-plugin版本5.0.1
判斷是這個(gè)原因,卸載之,重裝到3.2.0
npm uninstall optimize-css-assets-webpack-plugin --save-dev
npm i optimize-css-assets-webpack-plugin@3.2.0 --save-dev
然后執(zhí)行npm run build,成功!
問題解決