我刚刚开始使用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 }),
],
};
答案 0 :(得分:1)
在您的应用中使用React 16时,您可能正在使用具有React 15的对等依赖项的旧版本react-router。 React 16从主程序包中删除了PropTypes,看起来似乎是react-router所期待的。更新react-router。