为啥 webpack 构建后我的 react-routing 不起作用?
Posted
技术标签:
【中文标题】为啥 webpack 构建后我的 react-routing 不起作用?【英文标题】:Why doesn't my react-routing work after webpack building?为什么 webpack 构建后我的 react-routing 不起作用? 【发布时间】:2018-08-10 16:09:08 【问题描述】:我做了一个简单的反应路由器。当我开发它时,我使用了npm start
命令来启动一个开发服务器。一切正常。但是当我使用命令 npm run build
(使用 webpack)构建我的应用程序时,启动了一个简单的 http 服务器并转到 /add_project 时出现 404 错误。而且我不知道为什么会这样。请帮忙!
代码如下:
App.js
imports...
render()
return (
<Switch>
<div>
<Route exact path='/' component=Projects/>
<Route exact path='/add_project' component=AddProject />
</div>
</Switch>
);
index.js
imports...
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root')
);
webpack.config.js
const htmlPlugin = require('html-webpack-plugin')
module.exports =
entry: './src',
output:
filename: 'app.js',
path: __dirname + '/dist'
,
devtool: 'source-map',
module:
loaders: [
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
]
,
plugins: [
new HtmlPlugin(
template: 'public/index.html'
)
]
更新:
package.json
"name": "Test",
"version": "1.0.0",
"main": "index.js",
"scripts":
"build": "webpack -p --progress --config webpack.config.js",
"dev-build": "webpack --progress -d --config webpack.config.js",
"test": "echo \"Error: no test specified\" && exit 1",
"watch": "webpack --progress -d --config webpack.config.js --watch",
"start": "react-scripts start"
,
"license": "MIT",
"babel":
"presets": [
"es2015",
"react"
]
,
"devDependencies":
"babel-core": "^6.25.0",
"babel-loader": "^7.0.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"bootstrap": "^4.0.0",
"css-loader": "^0.28.4",
"eslint": "^4.18.1",
"eslint-plugin-react": "^7.7.0",
"extract-text-webpack-plugin": "^2.1.2",
"file-loader": "^0.11.2",
"jquery": "^3.2.1",
"react": "^15.6.1",
"react-bootstrap": "^0.31.0",
"react-dom": "^15.6.1",
"react-router-dom": "^4.2.2",
"style-loader": "^0.18.2",
"webpack": "^3.11.0"
UPD2:
AddProject.js
import React, Component from 'react';
class AddProject extends Component
constructor()
super();
render()
return (
<form className="form-horizontal">
<input type="text" ref="title" className="input" />
<input type="text" ref=""/>
</form>
);
export default AddProject;
【问题讨论】:
能否请您发布您的package.json
,以便我们查看您尝试运行的脚本
已添加。你现在可以看到
可以成功进入根路径(/
)并显示正确的页面?
是的。但是当我转到任何其他页面并重新加载它时,会显示 404 错误
能否请您发布您的AddProject
组件
【参考方案1】:
您已经将精确路径与“/”匹配,然后再次将其与 /add_project 路由匹配。尝试改变
<Route exact path='/add_project' component=
AddProject />
到
<Route path='/add_project' component=
AddProject />
如果在父路由上设置了精确,则子路由不匹配,但会按预期呈现 404
【讨论】:
没有。它没有解决问题。当我转到任何其他页面时出现 404 错误。以上是关于为啥 webpack 构建后我的 react-routing 不起作用?的主要内容,如果未能解决你的问题,请参考以下文章