我正在尝试中继寻宝教程,但在运行 npm start 时出现以下错误。我确实通过运行 npm run update-schema 更新了我的架构。
Uncaught Error: GraphQL validation error ``Cannot query field "game" on type "Query".`` in file `/home/tharaka/My Projects/relay-treasurehunt/js/routes/AppHomeRoute.js`. Try updating your GraphQL schema if an argument/field/type was recently added.
这是我的 AppHomeRoute.js 中的内容
import Relay from 'react-relay';
export default class extends Relay.Route {
static path = '/';
static queries = {
game: () => Relay.QL`query { game }`,
};
static routeName = 'AppHomeRoute';
}
似乎您必须通过
node
或 viewer
查询所有内容,因为这些是根查询类型上唯一的字段。所以也许可以尝试这个:
query {
viewer {
game
}
}
在您的
data/schema.js
文件中...
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
node: nodeField,
// Add your own root fields here
viewer: {
type: gameType,
resolve: () => getGame(),
},
}),
});
将
viewer
属性更改为 game
。像这样...
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
node: nodeField,
// Add your own root fields here
game: {
type: gameType,
resolve: () => getGame(),
},
}),
});
该属性的名称需要与您在主路由的片段中查询的字段相匹配。我想作为替代方案,您可以更改路线以请求
viewer
而不是 game
。感觉更好就做吧。