【问题标题】:Cannot get functions from apollo-server-express无法从 apollo-server-express 获取功能
【发布时间】:2019-02-13 11:08:09
【问题描述】:

我正在按照教程并尝试启动节点服务器,但我无法将其导入 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不再提供这样的功能?

【问题讨论】:

    标签: javascript express graphql


    【解决方案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-parsercorsRead the docs 了解有关如何配置 Apollo Server 实例的更多信息。

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 2020-12-17
      • 2021-11-01
      • 2020-11-08
      • 2020-08-19
      • 2022-07-11
      • 2019-09-01
      • 2019-06-26
      相关资源
      最近更新 更多