"You may need an appropriate loader to handle this file type" with Webpack and Babel "You may need an appropriate loader to handle this file type" with Webpack and Babel javascript javascript

"You may need an appropriate loader to handle this file type" with Webpack and Babel


You need to install the es2015 preset:

npm install babel-preset-es2015

and then configure babel-loader:

{    test: /\.jsx?$/,    loader: 'babel-loader',    exclude: /node_modules/,    query: {        presets: ['es2015']    }}


Make sure you have the es2015 babel preset installed.

An example package.json devDependencies is:

"devDependencies": {  "babel-core": "^6.0.20",  "babel-loader": "^6.0.1",  "babel-preset-es2015": "^6.0.15",  "babel-preset-react": "^6.0.15",  "babel-preset-stage-0": "^6.0.15",  "webpack": "^1.9.6",  "webpack-dev-middleware": "^1.2.0",  "webpack-hot-middleware": "^2.0.0"},

Now configure babel-loader in your webpack config:

{ test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }

add a .babelrc file to the root of your project where the node modules are:

{  "presets": ["es2015", "stage-0", "react"]}

More info:


If you are using Webpack > 3 then you only need to install babel-preset-env, since this preset accounts for es2015, es2016 and es2017.

var path = require('path');let webpack = require("webpack");module.exports = {    entry: {        app: './app/App.js',        vendor: ["react","react-dom"]    },    output: {        filename: 'bundle.js',        path: path.resolve(__dirname, '../public')    },    module: {        rules: [{            test: /\.jsx?$/,            exclude: /node_modules/,            use: {                loader: 'babel-loader?cacheDirectory=true',            }        }]    }};

This picks up its configuration from my .babelrc file:

{    "presets": [        [            "env",            {                "targets": {                    "browsers":["last 2 versions"],                    "node":"current"                }            }        ],["react"]    ]}