【发布时间】:2017-02-03 13:08:34
【问题描述】:
下面是我的路由代码
<Router history={ browserHistory }>
<Route path="/" component={ App } >
<IndexRoute component={ Indexpage } />
<Route path="users" component= { Users } >
<Route path="signin" component={ Signin } />
<Route path="signout" component={ Signout } />
<Route path="signup" component={ Signup } />
</Route>
</Route>
</Router>
唯一有效的路径是包含 {App}、{Indexpage}、{users} 组件的路径
{users} 组件嵌套在 {App} 本身中。所以当我去 URL:"/users" 时,它可以工作。
但是,当我转到嵌套在 {users} 中的其余 URL 时,例如 {signin}、{signout}、{signup}。 chrome状态错误:GET http://localhost:8080/users/bundle.js 404 (Not Found)
但是当我尝试将用户内嵌套组件之一的 Route 更改为 IndexRoute 时,该特定路由将起作用。
我为 {App} 和 {Users} 组件放置了 {this.props.children}。
有人可以建议如何使嵌套用户路由工作吗?我正在使用 webpack 来捆绑我的 jsx。
编辑 1:我在下面包含了我的 webpack.config
const webpack = require('webpack');
const path = require('path');
const debug = process.env.NODE_ENV !== "production";
module.exports = {
entry: ['./public/src/index.js'],
output: {
path: path.resolve(__dirname, 'public/src'),
filename: 'bundle.js'
},
module: {
loaders: [{
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['react', 'es2015', 'stage-1']
}
}]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
devServer: {
historyApiFallback: true,
contentBase: 'public'
},
plugins: debug ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin({ mangle: true , compress: { warnings: false }}),
]
};
【问题讨论】:
-
这似乎更多地与 webpack 配置有关。当您尝试访问
/users/*时,该应用会在/users中寻找bundle.js而不是/。 -
请进一步解释?
-
我解释了为什么会这样以及如何解决它。请看下面我的回答。
标签: reactjs webpack react-router react-redux