使用es5导出graphql架构

时间:2018-04-03 20:53:25

标签: ecmascript-6 graphql ecmascript-5 apollo

我正在编写一个运行带有graphql的Express服务器的脚本。我正在使用ES5。

这是我的server.js代码(运行Express服务器):

const express = require('express');
const cors = require('cors');

const bodyParser = require('body-parser');
const {graphqlExpress, graphiqlExpress} = require('apollo-server-express');

const schemaTest = require('./schemas/schema');

const app = express();
app.listen(4000, () => { console.log("Listening on 4000")});

app.use('/graphql', bodyParser.json(), graphqlExpress({schemaTest})); 
app.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'}));

这是我的schema.js的代码

const {makeExecutableSchema, addMockFunctionsToSchema} = require('graphql-tools');

const typeDefs = `type Query {
  greeting: String
}
`;

const schema = makeExecutableSchema({typeDefs});
addMockFunctionsToSchema({ schema });

module.exports = schema;

但是我得到了这个:

  

错误:预期未定义为GraphQL架构。

我无法找到我的错误。

为了您的信息,如果我将schema.js代码复制粘贴到server.js文件中,它可以正常工作,就像我没有正确导入(或导出)模式文件一样。

我的错误在哪里

1 个答案:

答案 0 :(得分:2)

graphqlExpress期望将配置对象传递给它,该对象上的一个属性为schema。所以你的代码应该是这样的:

app.use('/graphql', bodyParser.json(), graphqlExpress({
  schema: schemaTest,
}));

您目前正在做的是传递一个具有schemaTest属性但没有schema属性的对象。