プロジェクトに React を使用しており、webpack2 から webpack3 に移行していました。バベルとすべての依存関係を更新した後、実行npm run build
した結果、エラーが発生しました:Module build failed: SyntaxError: Missing class properties transform.
エラーの例:
11 |
12 | class Login extends Component {
> 13 | state = {
| ^
14 | email: "",
15 | password: ""
16 | }
もう一つの例:
11 | class Navigation extends React.Component {
12 |
> 13 | state = {
| ^
14 | loadingTotal: false,
15 | }
誰かが問題がどこにあるか知っていますか? エラーについてグーグルで検索しようとしましたが、これまでのところ解決策が見つかりませんでした...
.babelrc
{
"presets": ["env", "stage-2", "react"],
"plugins": [
"react-hot-loader/babel",
"transform-class-properties"
]
}
webpack.config
const webpack = require('webpack');
const WriteFilePlugin = require('write-file-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
const path = require('path');
const config = {
entry: {
'vendor': './dist/vendor',
'app': [
'react-hot-loader/patch',
'./app/index'
]
},
output: {
path: process.env.WEBPACK_ENV === 'production' ? path.join(__dirname, '/../../../../public_html/') : path.join(__dirname, '/public'),
filename: '[name].js',
publicPath: '/'
},
resolve: {
extensions: ['.ts', '.js', '.json']
},
module: {
rules: [
// { enforce: 'pre', test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader' }
{
test: /\.(js|jsx)?$/,
exclude: /node_modules/,
options: {
presets: ['env']
},
loader: 'babel-loader'
},
{test: /\.json$/, loader: 'json-loader'},
{test: /\.html/, loader: 'html-loader'},
{test: /\.styl$/, loader: 'style-loader!css-loader!stylus-loader'},
{test: /\.css$/, loader: 'style-loader!css-loader'},
{test: /\.(gif|png|jpe?g)$/i, loader: 'file-loader?name=images/[name].[ext]'},
{
test: /\.woff2?$/,
loader: 'url-loader?name=fonts/[name].[ext]&limit=10000&mimetype=application/font-woff'
},
{test: /\.(ttf|eot|svg)$/, loader: 'file-loader?name=fonts/[name].[ext]'}
]
}
};
console.log(process.env.WEBPACK_ENV);
config.devtool = process.env.WEBPACK_ENV === 'production' ? 'source-map' : 'eval-source-map';
config.plugins = [
new webpack.ProvidePlugin({
'$': "jquery",
'jQuery': "jquery",
'window.jQuery': "jquery",
'window.$': 'jquery'
}),
new webpack.DefinePlugin({
'WEBPACK_ENV': process.env.WEBPACK_ENV === 'production' ? '"production"' : '"dev"'
}),
new ExtractTextPlugin("styles.css"),
process.env.WEBPACK_ENV === 'production' ? new UglifyJSPlugin() : WriteFilePlugin()
]
module.exports = config;
ビルド コマンド:
"NODE_ENV=production BABEL_ENV=production WEBPACK_ENV=production ./node_modules/.bin/webpack --config webpack.config.js",