我正在与React一起使用GraphQL,但遇到了路由问题。 这主要来自快递,App可以在本地路由“ localhost:4000 /”上正常工作,但是在其他“ localhost:4000 / song”之外,我会收到“无法获取/歌曲”错误。
完整代码为:Lyrical-GraphQL Demo
这是我的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;
答案 0 :(得分:0)
您需要定义路线和要渲染的各个组件。这可能会有帮助,
https://gist.github.com/siakaramalegos/df4620c52e829f6107c75d5c3f0ad7f5
答案 1 :(得分:0)
那是因为请求将发送到服务器。您看到的错误是来自快递服务器。
您需要在server.js
中添加一个处理程序,以捕获所有其他类似这样的请求
app.get('*', function(req, res) {
res.sendfile('path-to-your-index-html');
});
事实上,我认为这个post可能有用。
答案 2 :(得分:0)
我解决了这个问题,实际上问题不是来自服务器端路由,而是HashRouter和react-router的BrowserRouter之间的混淆。
目前,我正在使用HashRouter,并且工作正常。对于BrowserRouter,您需要从服务器端正确设置所有路由。
感谢社区!