Webpack 3をbabelとともにインストールし、エントリindex.js/bundle.js
をビルドして実行します。ES7/ 8の機能でテストしましたが、インポートが機能せずUncaught SyntaxError: Unexpected identifier
になります。アプリのルートディレクトリにあるpackage.json
ファイルと別の.babelrc
ファイルにbabel設定を配置しようとしましたが、インポートしようとするとエラーが発生します。パッケージまたは設定がありませんか?
index.js(動作)
// does not work
// import React from 'react'
// works
const object1 = {
a: 'somestring',
b: 42,
c: false
};
console.log(Object.values(object1));
webpack.config.js
const path = require('path')
module.exports = {
context: path.resolve(__dirname, 'app/assets/javascripts/source'),
entry: './index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'app/assets/javascripts/webpack')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
}
。babelrc
{
"presets": ["env", "react"]
}
package.json
}
...
"license": "MIT",
"scripts": {
"build": "webpack",
},
"babel": {
"presets": [
"env",
"react"
]
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"prop-types": "^15.6.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"webpack": "^3.10.0",
"webpack-dev-server": "^2.11.1"
}
}
これを試してください:transform-es2015-modules-AMD、このプラグインはES2015モジュールを非同期モジュール定義(AMD)に変換します。
{
presets: ["env", "react"],
plugins: ["transform-es2015-modules-AMD"]
}
Es6を翻訳していないため機能していないため、importステートメントは機能していません。babel-preset-es2015
そしてそれを設定します。babelrc
{
"presets":[
"es2015", "react"
]
}