解決Vue運算符報錯:Syntax Error: Unexpected token問題
簡介
說明
本文介紹Vue項目中...(三點運算符)的“Syntax Error: Unexpected token”報錯的解決方法。
(當(dāng)然,其他項目中類似的問題解決方案也類似)。
報錯的原因
...(三點運算符)是ES6的新特性,Webpack無法解析,所以會報這個錯誤。
項目里雖然已經(jīng)引入了babel,但需要配置一下才能解決此問題。
問題復(fù)現(xiàn)
本處我是在使用Vuex的...mapState時遇到的。
babel依賴 (vue-cli腳手架默認(rèn)的依賴)
配置文件:package.json
webpack的babel配置(vue-cli腳手架默認(rèn)的配置)
配置文件:webpack.base.conf.js
代碼
<template> <div class="container"> <h3>ComponentB</h3> <div>計數(shù)器的值:{{ count }}</div> <div>計數(shù)器的2倍:{{ doubleCount }}</div> </div> </template> <script> import {mapState, mapGetters} from 'vuex' export default { computed: { ...mapState('module1', ['count', 'info']), ...mapGetters('module1', ['doubleCount']) } } </script> <style scoped> .container { margin: 20px; border: 2px solid blue; padding: 20px; } </style>
報錯信息
解決方案
方案1:.babelrc(配置presets)(推薦)
方案介紹
配置文件:項目根目錄/.babelrc (如果沒有,則新建此文件)
改為如下配置:
{ "presets": [ "stage-2" ] }
第三方庫問題
如果自己引入的第三方庫中存在擴(kuò)展運算符,就需要在 webpack.base.conf.js 中添加 resolve('第三方庫的路徑')。
module:{ rules:[ { test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client'), resolve('第三方庫的路徑')] } ] }
方案2:.babelrc(配置presets和plugins)
本方法不能解決第三方庫的...運算符問題,不推薦使用。
方案介紹
配置文件:項目根目錄/.babelrc (如果沒有,則新建此文件)
{ "presets": [ ["env", { "modules": false }], "stage-2" ], "plugins": ["transform-runtime", "transform-vue-jsx"] }
第三方依賴的問題
若項目里其他依賴中存在...擴(kuò)展運算符,必須在 webpack.base.conf.js 中添加 resolve('第三方依賴的路徑')。
module:{ rules:[ { test: /\.js$/, loader: 'babel-loader', include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client'), resolve('第三方庫的路徑')] } ] }
此時運行會報錯
方案3:依賴+.babelrc
此法比較麻煩,不推薦。
方案說明
手動加入babel-preset-es2015 依賴和babel-plugin-transform-object-rest-spread依賴,然后配置 .babelrc。
配置文件:項目根目錄/.babelrc (如果沒有,則新建此文件)
{ "presets": [ [ "env", { "modules": false, "targets": { "browsers": [ "> 1%", "last 2 versions", "not ie <= 8" ] } } ], "stage-2", [ "es2015", { "modules": false } ] ], "plugins": [ "transform-object-rest-spread" ] }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue?報錯-4058?ENOENT:no?such?file?or?directory的原因及解決方法
Vue?報錯-4058?ENOENT:?no?such?file?or?directory的原因和解決辦法,關(guān)于為什么為會報這個錯誤,按照字面意思的理解就是沒有找到這個文件或這個路徑,說明是路徑不對,本文給大家分享解決方案,感興趣的朋友一起看看吧2023-10-10vue實現(xiàn)給當(dāng)前元素添加樣式,其他元素?zé)o樣式問題
這篇文章主要介紹了vue實現(xiàn)給當(dāng)前元素添加樣式,其他元素?zé)o樣式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05詳解Vue如何實現(xiàn)自定義動畫與動畫效果設(shè)計
在Vue中,動畫效果是非常有用的,它可以使用戶界面變得更加生動、有趣,本文中我們將學(xué)習(xí)如何在Vue中進(jìn)行自定義動畫與動畫效果設(shè)計,感興趣的可以了解一下2023-06-06vue elementui表格獲取某行數(shù)據(jù)(slot-scope和selection-change方法使用)
這篇文章主要介紹了vue elementui表格獲取某行數(shù)據(jù)(slot-scope和selection-change方法使用),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01vue elementUI使用tabs與導(dǎo)航欄聯(lián)動
這篇文章主要為大家詳細(xì)介紹了vue elementUI使用tabs與導(dǎo)航欄聯(lián)動,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Vue項目中使用iView組件庫設(shè)置樣式不生效的解決方案
這篇文章主要介紹了Vue項目中使用iView組件庫設(shè)置樣式不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09