Javascript 反应:得到http://localhost:8080/contact 404(未找到)
尝试在我的应用程序中使用BrowserRouter,我不确定哪里出了问题,但我认为这可能与我的网页有关。最终,在第一次渲染时,当path='/'时,我可以使用任何组件。 一旦我尝试点击另一条路径,比如path='/contact',我就会得到一个404错误 Webpack.config.js-Javascript 反应:得到http://localhost:8080/contact 404(未找到),javascript,node.js,reactjs,express,webpack,Javascript,Node.js,Reactjs,Express,Webpack,尝试在我的应用程序中使用BrowserRouter,我不确定哪里出了问题,但我认为这可能与我的网页有关。最终,在第一次渲染时,当path='/'时,我可以使用任何组件。 一旦我尝试点击另一条路径,比如path='/contact',我就会得到一个404错误 Webpack.config.js- const path = require('path'); module.exports = { mode: 'development', entry: { app: './src/Ap
const path = require('path');
module.exports = {
mode: 'development',
entry: { app: './src/App.jsx' },
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, 'public'),
publicPath: '/',
},
module: {
rules: [{
test: /\.jsx?$/,
exclude: /node_modules/,
use: 'babel-loader',
},
],
},
optimization: {
splitChunks:{
name: 'vendor',
chunks: 'all',
},
},
devtool: 'source-map'
};
App.jsx-
import 'babel-polyfill';
import 'whatwg-fetch';
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route } from 'react-router-dom';
// import Page from './Page.jsx';
import About from './About.jsx';
import Contact from './Contact.jsx';
export default class App extends React.Component {
render() {
return (
<Router>
<div>
<Route path="/" component={About} />
<Route path="/contact" component={Contact} />
</div>
</Router>
)
}
}
ReactDOM.render(<App />, document.getElementById('content'));
我的文件结构如下
- Root Directory
package.json
webpack.config.js
.gitignore
.env
-> public
|-> app.bundle.js
|-> app.bundle.js.map
|-> App.js
|-> index.html
|-> vendor.bundle.js
|-> vendor.bundle.js.map
-> server
|-> server.js
-> src
|-> .babelrc
|-> About.jsx
|-> App.jsx
|-> Contact.jsx
首先,您需要导入交换机以切换路由
import { BrowserRouter as Router,Switch, Route } from 'react-router-dom';
然后修改如下返回函数,并将“精确”添加到路线定义中
return (
<Router>
<Switch>
<Route path="/" component={About} exact/>
<Route path="/contact" component={Contact} exact/>
</Switch>
</Router>
)
返回(
)
这将在
/contact
路由上呈现所需的组件我已经有一段时间没有使用express了,但是我没有看到为/contact”路由提供index.html的备用路由。如果您从react router dom
添加链接
导航到“/contact”,而不进行重定向(即转到基本路由,单击链接转到“/contact”),这将起作用,因为它不会命中服务器,但刷新“/contact”页面会再次导致404。TLDR:您在转到“/联系”时没有告诉express提供index.html页面,谢谢您的贡献,但这不起作用。我相信Jacob Smit说的可能是正确的,我没有告诉express在进入“/contacts”时提供index.html页面,尽管我仍然需要实现这个解决方案。因此我有一个朋友通知我,Jacob Smit确实对我的错误做出了正确的解释,一个简单的修复方法是实现app.get(“*”,(req,res)=>{res res sendFile(path.join(uu dirname,“../public”,“index.html”);})
在my server.js文件中。
return (
<Router>
<Switch>
<Route path="/" component={About} exact/>
<Route path="/contact" component={Contact} exact/>
</Switch>
</Router>
)