配置Webpack、Node及Babel对象扩展运算符转换器遇问题求助
解决Vuex中使用对象扩展运算符的Babel配置问题
看起来你卡在了Babel转换器的安装和配置上,没法用...运算符合并对象对吧?我来一步步帮你搞定:
第一步:安装正确的Babel依赖
首先,确保你安装的是Babel 7+的主流版本,打开终端执行:
npm install --save-dev @babel/core @babel/preset-env @babel/plugin-proposal-object-rest-spread babel-loader
如果用Yarn的话:
yarn add --dev @babel/core @babel/preset-env @babel/plugin-proposal-object-rest-spread babel-loader
要是之前装过旧版Babel(比如babel 6的包),建议先卸载干净再装新的,避免版本冲突拖后腿。
第二步:补全你的Webpack配置
你提到最后一个const定义和plugins数组最后一项有问题,先把这部分补对:
- 补全CopyWebpackPlugin的引入:
const CopyWebpackPlugin = require('copy-webpack-plugin');
- 在Webpack配置里添加Babel的loader规则,同时把plugins数组里的CopyWebpackPlugin实例化正确:
const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const ManifestPlugin = require('webpack-manifest-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); // 补全这行 module.exports = { // 你的entry、output等基础配置... module: { rules: [ // 别忘了Vue文件的loader(如果没加的话) { test: /\.vue$/, loader: 'vue-loader', options: { compilerOptions: { preserveWhitespace: false } } }, // 添加Babel处理JS文件的规则 { test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' }, // 你的CSS相关loader规则... ] }, plugins: [ new CleanWebpackPlugin(), new ManifestPlugin(), new ExtractTextPlugin('styles.[contenthash].css'), // 正确实例化CopyWebpackPlugin,这里根据你的需求配置复制规则 new CopyWebpackPlugin({ patterns: [ { from: path.resolve(__dirname, 'static'), to: 'static' } ] }) ], // 你的resolve等其他配置... };
第三步:配置Babel支持对象扩展运算符
在项目根目录创建一个.babelrc文件,内容如下:
{ "presets": ["@babel/preset-env"], "plugins": ["@babel/plugin-proposal-object-rest-spread"] }
如果你不想单独用.babelrc,也可以把这段配置直接写在Webpack的babel-loader选项里,不过单独的配置文件会更清晰好维护。
第四步:验证配置
现在你可以在Vuex的代码里放心用对象扩展运算符了,比如:
// 比如在mutations里合并状态 const mutations = { updateState(state, newState) { state = { ...state, ...newState }; } };
运行你的Webpack构建命令,如果没有报错,就说明配置成功了。
要是还是安装失败,先检查下是不是网络问题导致npm包下载失败,或者看看终端的错误提示——比如有没有Webpack和babel-loader版本不兼容的提示(Webpack 4对应babel-loader 8+,Webpack 5对应babel-loader 8.2+),针对性调整版本就行。
内容的提问来源于stack exchange,提问作者DatsunBing
相关产品推荐
相关产品推荐

