我正在为我的项目使用React + Webpack和Babel Loader。
当我尝试生成捆绑代码时,会抛出以下错误(对于使用{... state}时的每个reducer):
@ ./src/reducers/index.js 29:21-47
@ ./src/index.js
ERROR in ./src/reducers/logged_navbar.js
Module build failed: SyntaxError: C:/xampp/htdocs/scoala-de-iarna/src/reducers/logged_navbar.js: Unexpected token (8:12)
6 | let data = _.mapKeys(action.payload.data, 'id');
7 | state.navbarLogged = data;
> 8 | return { ...state };
| ^
9 | default: return state;
10 | }
11 | }
但是,在开发人员版本上测试应用程序时,不会显示此错误。
webpack.config.js:
var webpack = require('webpack');
var path = require('path');
var BUILD_DIR = path.resolve(__dirname, 'src/bundle');
var APP_DIR = path.resolve(__dirname, 'src');
var config = {
entry: APP_DIR + '/index.js',
output: {
path: BUILD_DIR,
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.jsx?$/,
include: APP_DIR,
exclude: /node_modules/,
loader: 'babel-loader',
}
]
}
};
module.exports = config;
.babelrc:
{
"presets" : ["es2015", "react"]
}
答案 0 :(得分:0)
object spread operator目前仍是第3阶段提案,尚未最终确定。因此,它不包含在babel核心中。
要使用babel进行编译,在您的babel配置中包含stage 3 preset :
{
"presets" : ["es2015", "stage-3", "react"]
}
答案 1 :(得分:0)
安装并添加" stage2"预设
npm install --save-dev babel-preset-stage-2
"presets" : ["es2015", "react", "stage-2"]
安装并添加babel-plugin-transform-object-rest-spread到插件
npm install --save-dev babel-plugin-transform-object-rest-spread
{
"plugins": ["transform-object-rest-spread"]
}