我在ReactJS
的路线遇到问题。我定义了一些这样的路线:
...Import / Class...
class App extends Component {
render() {
return (
<div>
<Header />
<Switch>
<Route exact path="/" component={Home} />
<Route path="/login" component={Login} />
<Route path="/signup" component={Signup} />
<ProtectedRoute path="/user/contact" component={Contact} />
<ProtectedRoute path="/user/person" component={UserPerson} />
<ProtectedRoute path="/user/profile" component={Profile} />
<Route component={NotFound} />
</Switch>
<Footer />
</div>
);
}
}
...Export...
下面您可以看到我的ProtectedRoute
课程
...Import / Class...
const ProtectedRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={props => (
AuthGestion.userIsAuthenticated() ? (
<Component {...props} />
) : (
<Redirect to={{
pathname: '/login',
state: { from: props.location }
}}/>
)
)} />
);
...Export...
当我带着<NavLink to="/user/person"></NavLink>
进入页面时,没有问题,组件已加载并且可以看到页面。
但是,当我直接进入网址/user/person
并为页面充值(CTRL + F5)时,我在Console
中遇到了错误SyntaxError: expected expression, got '<'
和一个白页。
只是用户路线不起作用。
我在服务器信息下方添加:
import path from 'path';
import bodyParser from 'body-parser';
import express from 'express';
import mongoose from 'mongoose';
import routes from './routes/index.route';
import config from '../../config/config';
import webpack from 'webpack';
import webpackConfig from '../../config/webpack.config.dev';
import webpackDevMiddleware from 'webpack-dev-middleware';
import webpackHotMiddleware from 'webpack-hot-middleware';
//Connexion MongoDB
mongoose.connect(config.mongodbUri, { useNewUrlParser: true });
mongoose.connection.on('connected', () => { console.log('MongoDB connecté'); });
mongoose.connection.on('error', (error) => { console.log(error); });
//Lancement serveur express
const server = express();
//Express need
server.use(bodyParser.json());
server.use(express.static(config.publicPath));
server.use(express.static(config.distPath));
//Hot reload
if(config.isDevMode) {
const webpackCompiler = webpack(webpackConfig);
server.use(webpackDevMiddleware(webpackCompiler, {}));
server.use(webpackHotMiddleware(webpackCompiler));
}
// Route vers l'API
server.use('/api', routes);
// Landing page
server.get('/*', (req, res) => {
res.sendFile(path.join(config.publicPath, '/index.html'));
});
//Ecoute du serveur
server.listen(config.port, () => {
console.log(`App here : http://${config.host}:${config.port}`);
});
export default server;
您能帮我理解这个问题吗?如果不好的话,也许可以纠正我的路线。
答案 0 :(得分:0)
供以后参考:https://stackoverflow.com/a/37949474/11129751
我有一个没有任何明确说明的react / react-router页面, 相同的错误:SyntaxError:期望的表达式,得到了'<',开始 一旦我配置了一个反应路由,就会出现,而不仅仅是root/。
经过一些试验,我在index.html中找到了 是js文件的链接:
因此,解决方案 是在源路径中添加/:
并且错误有 不见了。
希望能有所帮助。