javascript - 无法从 apollo-server-express 获取功能
问题描述
我正在遵循教程并尝试启动节点服务器,但我无法将其导入 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 不再提供这样的功能?
解决方案
Apollo Server 2.0 引入了许多重大更改,旨在简化设置。文档中有一个迁移指南概述了更改。如果您只需要一个 GraphQL 服务器,那么入门可以很简单:
const { ApolloServer, gql } = require('apollo-server');
const server = new ApolloServer({ typeDefs, resolvers });
server.listen()
请注意,上面只是使用了apollo-server
包。apollo-server-express
如果您想继续使用 Apollo 作为快速中间件而不是将 Apollo 作为“独立”服务器运行,那么仍然存在。
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-parser
或cors
. 阅读文档以获取有关如何配置 Apollo Server 实例的更多信息。
推荐阅读
- typescript - 如何编写一个函数,通过类型检查将字段添加到对象数组?
- java - 使用哪种基于 Java 节点的数据结构?
- java - JPanel 的平滑运动和同时更新 JLabel
- python - 尝试在 Python 中对 .csv 文件进行排序(创建列表并删除重复项)
- elasticsearch - 在聚合中忽略查询中的“匹配”子句
- java - 如何最好地在 hadoop 上模拟用户帐户
- ios - Fastlane - 上传到 TestFlight 会返回错误,但仍显示构建可用于测试
- vue.js - 如何使用 vue.js 循环进行分组和操作
- python - 有人可以解释一下内容丢失功能吗?
- apache-camel - Camel Cache Time To Live for Ehcache 3 不工作