Reactjs Express server路由问题-不允许其他路由只允许主路由工作
我正在学习使用React的GraphQL,但仍停留在路由问题上。 这主要是来自express,应用程序在主路径“localhost:4000/”上运行良好,但除了此“localhost:4000/song”之外,我收到了“Cannot get/song”错误 以下是完整的代码: 这是我的server.js文件:Reactjs Express server路由问题-不允许其他路由只允许主路由工作,reactjs,express,react-router,apollo-client,Reactjs,Express,React Router,Apollo Client,我正在学习使用React的GraphQL,但仍停留在路由问题上。 这主要是来自express,应用程序在主路径“localhost:4000/”上运行良好,但除了此“localhost:4000/song”之外,我收到了“Cannot get/song”错误 以下是完整的代码: 这是我的server.js文件: const express = require('express'); const models = require('./models'); const expressGraphQL
const express = require('express');
const models = require('./models');
const expressGraphQL = require('express-graphql');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const schema = require('./schema/schema');
const app = express();
// Replace with your mongoLab URI
const MONGO_URI = 'mongodb://XXX:XXX@ds123371.mlab.com:23371/lyricaldb';
if (!MONGO_URI) {
throw new Error('You must provide a MongoLab URI');
}
mongoose.Promise = global.Promise;
mongoose.connect(MONGO_URI);
mongoose.connection
.once('open', () => console.log('Connected to MongoLab instance.'))
.on('error', error => console.log('Error connecting to MongoLab:', error));
app.use(bodyParser.json());
app.use('/graphql', expressGraphQL({
schema,
graphiql: true
}));
const webpackMiddleware = require('webpack-dev-middleware');
const webpack = require('webpack');
const webpackConfig = require('../webpack.config.js');
app.use(webpackMiddleware(webpack(webpackConfig)));
module.exports = app;
您需要定义要渲染的管线和各个组件。这可能会有所帮助
这是因为请求将发送到服务器。您看到的错误来自express server 您需要在
server.js
中添加一个处理程序来捕获所有其他类似的请求
app.get('*',函数(req,res){
res.sendfile('path-to-your-index-html');
});
事实上,我认为这可能有用。我解决了这个问题,实际上问题不是来自服务器端路由,而是react路由器的HashRouter和BrowserRouter之间的混淆 目前我正在使用HashRouter,它运行良好。对于BrowserRouter,您需要从服务器端正确设置所有路由
谢谢社区 谢谢你的回答。我尝试在路由中添加“精确”属性,但仍然有相同的错误。谢谢你的回复,是的,我认为可能是这样。在我的server.js文件中,我使用
app.use(bodyParser.json());use('/graphql',expressGraphQL({schema,graphiql:true}));const webpackMiddleware=require('webpack-dev-middleware');const webpack=require('webpack');const webpackConfig=require('../webpack.config.js');app.use(webpackMiddleware(webpack(webpackConfig)))代码>