在尝试 vuex2 时,发现 vuex2 增加了 <font style="color:#FF0000">mapGetters</font > 和 < font style="color:#FF0000">mapActions</font > 的方法,借助 stage2 的 < font style="color:#FF0000">Object Rest Operator</font > 特性,可以写出下面代码:
methods: { | |
marked, | |
...mapActions([ | |
'getArticles' | |
]) | |
} |
但是在借助 babel 编译转换时发生了报错:<font style="color:#FF0000">BabelLoaderError: SyntaxError: Unexpected token</font>。
# 解决方案
在 vuex 的 repo issues 中有人提过这样的问题,后来是修改了 eslint 配置中对 <font style="color:#FF0000">Object Rest Operator</font > 的支持解决了问题,然而我根本没有使用 eslint。
接着在 babel 的 issues 中搜索这样的报错,原来是我 babel 预置的转换器是 <font style="color:#FF0000">babel-preset-es2015</font>,并不能转换 < font style="color:#FF0000">Object Rest Operator</font > 特性。
解决方法很简单了,可以安装整个 stage2 的预置器或者安装 <font style="color:#FF0000">Object Rest Operator</font > 的 babel 插件 < font style="color:#FF0000">babel-plugin-transform-object-rest-spread</font>。
我选择了安装插件,接着在 babel 的配置文件 <font style="color:#FF0000">.babelrc</font > 中应用插件:
{ | |
"presets": [ | |
["es2015", { "modules": false }] | |
], | |
"plugins": ["transform-object-rest-spread"] | |
} |
重启 webpack,就不会再有报错了。