Duvida sobre apolloserver

nas aulas de graphql e apollo server, no momento em que chega na parte de usar o
“server.applymiddleware” sempre retorna um erro dizendo que esperava “await server.start()” antes, mas mesmo botando não roda e o site nao fica online, alguem pode me falar onde esta o erro? vou compartilhar meu codigo.

import express from 'express'
import { ApolloServer, gql } from 'apollo-server-express'


const app = express();

const server = new ApolloServer({
    typeDefs: gql`
    
    type Client {
        name: String!
        id: ID!
    }
    
    
    type Demand {
        id: ID!
        name: String!
        client: Client!
        deadline: String
    }
   
    type Query {
        demands: [Demand]!
    }
    `,
    resolvers: {
        Query: {
            demands: () => [],
        }
    }
})
server.applyMiddleware({
    app,
    cors: {
        origin: 'http://localhost:3000'
    },
})

const PORT = process.env.PORT ? parseInt(process.env.PORT) : 8000
const HOSTNAME = process.env.HOSTNAME || '127.0.0.1'
s
server.listen(PORT,HOSTNAME, () => {
    console.log('server listening on http://127.0.0.1:8000')
})
2 Likes


segue print do erro no console

Opa blz?

Tive esse mesmo problema aqui também e como o server.start() devolve uma promise fiz o seguinte para contornar. Espero o retorno de sucesso da promise e dentro de um bloco then chamo o server.applyMiddleware:

server.start().then(_ => {
        server.applyMiddleware({
            app,
            cors: {
                origin: '*'
            },
            bodyParserConfig: true,
        })
    })
5 Likes

Boa Henrique.

Apollo Server na versao 3.0+ usa Async Function. Vc pode usar Await, mas pode usar como o Henrique ja respondeu.

Na documentacao: Choosing an Apollo Server package - Apollo GraphQL Docs

Importante falar, que utilizar o async estava me impossibilitando de acessar o playground, fiquei umas 3horas tentando descobrir oq era, o meu estava assim:

async () =>{
        await server.start();
        server.applyMiddleware({
             app,
             cors: {
                 origin: 'http://localhost:3000',
             },
        })
}

Primeiro q dessa forma que estava eu não conseguia acessar o /graphql, tive que mudar para a solução do Henrique (descrita acima). Depois ainda demorei para conseguir acessar os typedef no playground e não sabia o pq. Era problema no cors também, então apliquei conforme o colega Henrique falou e deu certo.

Agora complicado, só hoje eu perdi umas 4-5horas tentando descobrir bugs e erros só por conta das aulas estarem desatualizadas…

1 Like

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.