无法从apollo-server-express

时间:2018-09-08 08:58:04

标签: javascript express graphql

我正在按照教程进行操作,并尝试启动节点服务器,但无法将其导入到Apollo软件包的功能中

const {graphqlExpress, graphiqlExpress} = require('apollo-server-express'); // here i importing fucntions
const bodyParser = require('body-parser'); // import parser
const cors = require('cors'); // import cors
const express = require('express'); // import cors
const { makeExecutableSchema } = require('graphql-tools');

const port = 9000; // define port

const schema = makeExecutableSchema({typeDefs, resolvers}); // init shcema

const app = express();
app.use(cors(), bodyParser.json());
app.use('/graphql', graphqlExpress({schema})); // is not a function
app.use('/graphiql', graphiqlExpress({endpointUrl: '/graphql'})); // is not a function
app.listen(port, () => console.log(`Server is running on the port ${port}`));

当我启动服务器时,由于“ graphqlExpress不是一个函数”而失败,并且在注释后服务器重新启动了有关graphiqlExpress的相同操作。也许我正在遵循的教程已经过时,而apollo-server-express不再提供此类功能了?

1 个答案:

答案 0 :(得分:1)

Apollo Server 2.0引入了许多重大更改,目的是简化设置。文档中有migration guide概述了更改。如果您只需要一台GraphQL服务器,那么入门就可以像这样简单:

const { ApolloServer, gql } = require('apollo-server');

const server = new ApolloServer({ typeDefs, resolvers });
server.listen()

请注意,以上仅使用apollo-server包。如果您想继续使用Apollo作为快速中间件,而不是将Apollo作为“独立”服务器运行,那么apollo-server-express仍然存在。

const { ApolloServer, gql } = require('apollo-server-express');
const app = require('express')();

const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
app.listen({ port: 3000 })

新的API消除了单独导入和实现body-parsercors之类的其他中间件的需要。 Read the docs了解有关如何配置Apollo Server实例的更多信息。