首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >server.applyMiddleware({app})函数的问题不接受任何参数

server.applyMiddleware({app})函数的问题不接受任何参数
EN

Stack Overflow用户
提问于 2022-06-23 04:50:46
回答 1查看 103关注 0票数 2

我想做的是使用typeScript和apolloserver进行订阅。我看过很多教程,他们中的大多数都是这样做的,而且对他们很有用。A.a

代码语言:javascript
复制
import { ApolloServer } from "apollo-server";
import { connectDB } from "./mongodb";
import { typeDefs } from "./schema";
import Query from "./resolvers/Query";
import Mutation from "./resolvers/mutation";
import dotenv from "dotenv";
//dotenv.config()
import { createServer } from "http";
import { ApolloServerPluginDrainHttpServer } from "apollo-server-core";
import { makeExecutableSchema } from "@graphql-tools/schema";
import { WebSocketServer } from "ws";
import { useServer } from "graphql-ws/lib/use/ws";
import express from "express";
import { SubscriptionServer } from "subscriptions-transport-ws";
import { PubSub } from 'graphql-subscriptions';
import { execute,subscribe } from "graphql";
const run = async () => {
  dotenv.config();
  const pubsub = new PubSub();
  const db = await connectDB();
  const port = process.env.PORT;

const app = express();
const httpServer=createServer(app)
const schema = makeExecutableSchema({
    typeDefs,
    resolvers: {
        Query,
        Mutation,
    },
    });

/*  
  const wsServer = new WebSocketServer({

    server: httpServer,
 
    path: "/graphql",
  });

  const serverCleanup = useServer({ schema }, wsServer);
   */

  const server = new ApolloServer({
    schema,
    typeDefs,
    context: ({ req, res }) => ({ req, res, pubsub }),
    plugins: [ApolloServerPluginDrainHttpServer({ httpServer }), {
        async serverWillStart() {
            return {
                async drainServer() {
                    subscriptionServer.close();
                }
            };
        }
    }],
    });
    const subscriptionServer = SubscriptionServer.create({
    
        schema,
      
        execute,
        subscribe,
        
        async onConnect(
            connectionParams:any,
            webSocket:any,
            context:any
        ){
            console.log('Connected!');  
            return {pubsub}    
        },
        onDisconnect() {
            console.log('Disconnected!')
        }
    }, {
        // This is the `httpServer` we created in a previous step.
        server: httpServer,
        // This `server` is the instance returned from `new ApolloServer`.
        path: server.graphqlPath,
    });




  /* server.listen(port).then((url) => {
    console.log("Server escuchando en el puerto 2000");
  }); */
  await server.start();

  server.applyMiddleware({app}) //Error 
  
    httpServer.listen(port, () => {
    console.log(
      `Server is now running on http://localhost:${port}${server.graphqlPath}`,
    );
  }); 
};
try {
  run();
} catch (error) {
  console.log(error);
}

All the information I have collected from here

EN

回答 1

Stack Overflow用户

发布于 2022-11-30 08:24:14

你不应该使用“阿波罗-服务器”使用“阿波罗-服务器-快递”https://www.apollographql.com/docs/apollo-server/v2/integrations/middleware/

代码语言:javascript
复制
import { ApolloServer } from 'apollo-server-express'
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72724685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档