Reactjs Express server路由问题-不允许其他路由只允许主路由工作

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

我正在学习使用React的GraphQL,但仍停留在路由问题上。 这主要是来自express,应用程序在主路径“localhost:4000/”上运行良好,但除了此“localhost:4000/song”之外,我收到了“Cannot get/song”错误

以下是完整的代码:

这是我的server.js文件:

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)))