- 确认GraphQL服务器已部署并运行正常。
- 检查GraphQL服务是否具有正确的schema定义和类型,以及查询是否与schema匹配。
- 检查在查询中使用的所有字段是否在schema中定义。
- 检查查询的变量是否正确定义和传递到查询字符串中。
- 确认使用的JavaScript库和React版本与指南中指定的版本匹配。
- 如果出现AST Node错误,请检查查询语法,以确保该查询是GraphQL语法的一部分。
- 如果以上方法都无效,请尝试使用"relay-compiler"命令行工具来检查查询文件和schema定义文件,以查找任何错误。
下面是Relay逐步指南(Step by step guide)的示例代码,可用于排除上述问题:
// server.js
const express = require('express');
const graphqlHTTP = require('express-graphql');
const { buildSchema } = require('graphql');
const schema = buildSchema(`
type Query {
hello: String
}
`);
const root = {
hello: () => 'Hello World!',
};
const app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at http://localhost:4000/graphql');
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { graphql, QueryRenderer } from 'react-relay';
import { Environment, Network, RecordSource, Store } from 'relay-runtime';
const environment = new Environment({
network: Network.create((operation, variables) => {
return fetch('/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
query: operation.text,
variables,
}),
}).then(response => {
return response.json();
});
}),
store: new Store(new RecordSource()),
});
const