React app编译但在控制台中出错

时间:2017-11-22 12:48:01

标签: javascript reactjs webpack babel

我刚刚开始使用webpack构建一个React.js应用程序,而代码编译得很好,我得到:

Uncaught TypeError: Cannot read property 'array' of undefined
at Object.<anonymous> (RoutingContext.js:28)

在浏览器控制台中。我甚至不知道从哪里开始这个问题。

RoutingContext在react-router自己的代码中不是我的,特别是这部分:

var _React$PropTypes = _react2['default'].PropTypes;
var array = _React$PropTypes.array;
var func = _React$PropTypes.func;
var object = _React$PropTypes.object;

我认为导致问题的代码是:

render((
  <Router history={hashHistory}>
    <Route path="/" component={App}>
      <Route path="adverts" name="adverts" component={Adverts}></Route>
      <Route path="ads" name="ads" component={Adverts}></Route>
    </Route>
  </Router>
), document.getElementById('root'));

webpack配置:

var debug = process.env.NODE_ENV !== "production";
var webpack = require('webpack');
var path = require('path');

module.exports = {
  context: path.join(__dirname, "src"),
  devtool: debug ? "inline-sourcemap" : null,
  entry: ["babel-polyfill", "./index.js"],
  module: {
    rules: [
        { test: /\.json$/, loader: 'json-loader' }
      ],
    loaders: [
      {
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
        query: {
          presets: ['react', 'es2015', 'stage-0'],
          plugins: ['react-html-attrs', 'transform-class-properties', 'transform-decorators-legacy'],
        }
      },
      {
        test: /\.css$/,
        include: /node_modules/,
        loaders: ['style-loader', 'css-loader'],
      }
    ]
  },
  output: {
    path: __dirname + "/src/",
    filename: "index.min.js"
  },
  plugins: debug ? [] : [
    new webpack.IgnorePlugin(/(locale)/, /node_modules.+(momentjs)/),
    new webpack.optimize.DedupePlugin(),
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
  ],
};

1 个答案:

答案 0 :(得分:1)

在您的应用中使用React 16时,您可能正在使用具有React 15的对等依赖项的旧版本react-router。 React 16从主程序包中删除了PropTypes,看起来似乎是react-router所期待的。更新react-router。