Babel Loader 和 Webpack + React 语法错误
Babel Loader and Webpack + React syntax error
我正在为我的项目使用 React + Webpack 和 Babel Loader。
当我尝试生成捆绑代码时,抛出以下错误(对于使用 {...state} 时我拥有的每个减速器):
@ ./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"]
}
object spread operator 目前仍处于第 3 阶段提案,尚未最终确定。因此,它没有包含在 babel 核心中。
要用 babel 编译它,在你的 babel 配置中包含 stage 3 preset:
{
"presets" : ["es2015", "stage-3", "react"]
}
安装 "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"]
}
我正在为我的项目使用 React + Webpack 和 Babel Loader。
当我尝试生成捆绑代码时,抛出以下错误(对于使用 {...state} 时我拥有的每个减速器):
@ ./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"]
}
object spread operator 目前仍处于第 3 阶段提案,尚未最终确定。因此,它没有包含在 babel 核心中。
要用 babel 编译它,在你的 babel 配置中包含 stage 3 preset:
{
"presets" : ["es2015", "stage-3", "react"]
}
安装 "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"]
}