Webpack / Babel / React build error: "Unknown option: foo/node_modules/react/react.js.Children"

ReactjsWebpackBabeljs

Reactjs Problem Overview


I'm trying to build a project with webpack and react with this webpack config:

var path = require('path');
var webpack = require('webpack');

module.exports = {
  entry: [
    'babel-polyfill',
    './app/less/main.less',
    './app/main.js',
    'webpack-dev-server/client?http://localhost:8080'
  ],
  output: {
    publicPath: '/',
    filename: 'dist/main.js'
  },
  debug: true,
  devtool: 'source-map',
  module: {
    loaders: [
      {
        test: /\.js$/,
        include: path.join(__dirname, 'app'),

        loader: 'babel-loader',
        query: {
          presets: ['react', 'es2015']
        }
      },
      {
        test: /\.less$/,
        loader: "style!css!autoprefixer!less"
      },
    ]
  }
};

I am sure I have the needed pm modules too and have webpack installed, however when running webpack I get:

Module build failed: ReferenceError: [BABEL] /Users/me/foo/app/main.js: Unknown option: foo/node_modules/react/react.js.Children

Any ideas?

Reactjs Solutions


Solution 1 - Reactjs

Sorry I forgot to install babel-preset-react:

$ npm install babel-preset-react --save-dev

Solution 2 - Reactjs

I just wanted to add that I got the error after I uninstalled an old npm module I wasn't using in my project anymore. Which was weird because I wasn't using it anywhere - how could uninstalling something that isn't used anywhere cause an error?

Turns out that one of that modules sub-dependencies had babel-preset-react, which I had missed installing to my own project when I started it. Thus, uninstalling that package also uninstalled the critical babel-preset-react!

For over a year, my react app could compile thanks to another package's sub-dependency...


So yes, installing babel-preset-react solved the issue for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSuperUberDuperView Question on Stackoverflow
Solution 1 - ReactjsSuperUberDuperView Answer on Stackoverflow
Solution 2 - ReactjsChrisView Answer on Stackoverflow