Error: Missing class properties transform
Test.js
:
export class Test extends Component {
constructor (props) {
super(props)
}
static contextTypes = {
router: React.PropTypes.object.isRequired
}
.babelrc
:
{
"presets": ["es2015", "react", "stage-0"],
"plugins": ["transform-class-properties"]
}
package.json
:
"babel-core": "^6.5.1",
"babel-eslint": "^4.1.8",
"babel-loader": "^6.2.2",
"babel-plugin-react-transform": "^2.0.0",
"babel-plugin-transform-class-properties": "^6.5.2",
"babel-preset-es2015": "^6.5.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0",
"babel-register": "^6.5.2",
私はWebを精査し、すべての修正を中心に行っています。babel6にアップグレードし、「stage-0」の順序を「es2015」の後に切り替えます。すべて私がやった。
OK、最後にこれを理解しました、私のwebpack.config.js
で:
module: {
loaders: [
{
test: /\.js?$/,
exclude: /(node_modules|bower_components)/,
loaders: [
'react-hot',
'babel?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
}
]
}
'babel?presets[]=stage-0,presets[]=react,presets[]=es2015'
.babelrc
と同じ方法で処理する必要があり、ステージ0をes2015以降に切り替えて、完全にコンパイルします。
babel-plugin-transform-class-properties
をインストールする必要があります
npm install babel-plugin-transform-class-properties --save-dev
以下を.babelrc
ファイルに追加します
"plugins": ["transform-class-properties"]
stage-3
の代わりにstage-0
を使用していたため、このエラーが発生しました。
これと同じエラーが発生し、.babelrcでプラグインを正しく注文しましたが、それでも持続しました。 Webpackローダーで定義したプリセットパラメーターを削除すると、修正されました。
以前のwebpack設定:
module: {
rules: [
{
test: /.jsx?$/,
loader: 'babel-loader',
include: path.join(__dirname, 'src'),
exclude: /node_modules/,
query: {
presets: ['es2015', 'react']
}
}
]
}
動作中のwebpack設定:
module: {
rules: [
{
test: /.jsx?$/,
loader: 'babel-loader',
include: path.join(__dirname, 'src'),
exclude: /node_modules/
}
]
}
また、環境プリセット"presets": [ "react", "es2015", "stage-0", ["env", { "modules": false }]],
を使用しているため、このエラーが発生します。環境プリセットを削除すると、うまく機能します。
@speakは正しいが、順序を変更する必要がある
loaders: [
'react-hot',
'babel?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
最後に発見された、Laravel-Mixプロジェクトでこのエラーを削除するには、以下のコードをwebpack.mix.js
に追加します
mix.webpackConfig({
module: {
rules: [
{
test: /\.js?$/,
exclude: /(node_modules|bower_components)/,
loaders: [
'babel-loader?presets[]=react,presets[]=es2015,presets[]=stage-0'
]
}
],
}
});
私の場合の修正は、'transform-class-properties'プラグインをwebpack.config.jsのoptions属性で定義していました。私はbabel V6を使用しています
rules:[
.....,
{
test: /\.(js|jsx)$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
options: { plugins: ['transform-class-properties']}
}
]
koa-react-view を使用して同じ問題に遭遇しました。これらの回答に触発され、koa server.js
の次のコードで最終的に修正しました。
const register = require('babel-register');
register({
presets: ['es2015', 'react', 'stage-0'],
extensions: ['.jsx']
});