[GraphQL][Nodemon] Erro - app crashed: waiting for file changes before starting

Oi galera.

Então, fui seguindo as instruções da aula 14 sobre Apollo Server e após fazer todas as alterações que o professor indicou eu continuo com erro. O código do professor funciona, tudo roda normal, mas pra mim aparece esse erro.

Meu código main.js:

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

// com o express é mais prático e enxuto do que 'na unha'
const app = express();

// vamos criar um server que é uma instância do Apollo Server
const server = new ApolloServer({
  typeDefs: gql`
  type Client {
    id: ID!
    name: String!
  }
  type Demand {
    id: ID!
    name: String!
    client: Client!
    deadline: String
  }
  type Query {
    demands:[Demand]!
  }
  `,
});

server.applyMiddleware({
  app,
  cors: {
    origin: 'http://localhost:3000',
  },
});

// server.get('/status', (_, response) => {
//   response.send({
//     status: 'Okay',
//   });
// });

// const enableCors = cors({ origin: 'http://localhost:3000' });

// server
// .options('/authenticate', enableCors)
// .post('/authenticate', enableCors, express.json(), (request, response) => {
//   console.log('E-mail', request.body.email, 'Senha', request.body.password);
//   response.send({
//     Okay: true,
//   });
// })

const PORT = process.env.PORT ? parseInt(process.env.PORT) : 8000;    // parseInt pq PORT vem como string
const HOSTNAME = process.env.HOSTNAME || '127.0.0.1';

server.listen(PORT, HOSTNAME, () => {
  console.log(`Server is listening at ${HOSTNAME}:${PORT}.`);
});

Alguém sabe o que preciso fazer?

3 Likes

Segundo a documentacao, nessa parte

server.applyMiddleware({
  app,
  cors: {
    origin: 'http://localhost:3000',
  },
});

Utiliza isso no lugar

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

Fonte: Choosing an Apollo Server package - Apollo GraphQL Docs

3 Likes

Tive uma sequencia de erros nessa parte e não lembro bem o que resolveu. Além da dica do @himynameisrobson, funcionou para mim:

Problema: [server] Erro no import de gql
Solução: instalar o pacote graphql junto ou depois de instalar o apollo-server-express
Exemplo: pnpm --filter @dev-demands/server i apollo-server-express graphql

do post:

3 Likes

tenta assim:

server.applyMiddleware({
app,
cors: {
origin: 'http://${HOSTNAME}:3000`,
},
});

2 Likes

Bem que eu vi ele falar algo desse tipo ali no erro, mas não tinha entendido direito. Agora ficou claro. Porém não funcionou. Aparentemente, tenho um erro de sintaxe e de novo não entendo bem o que devo fazer.

2 Likes

Eu já instalei o graphql, então imagino que o problema não seja esse…

1 Like

Tentei e continuo com o mesmo erro.

1 Like

Dá uma olhada nesse outro post aqui então, nele o colega cria um: await server.start();

1 Like

Acho que um dos erros que cometi em um momento foi usar npm em vez de pnpm.

1 Like

Voce tem que envolver toda a sua logica em uma funcao assincrona pra usar o await, ja que o await sempre espera o async e vice-versa. Clica no link que eu te mandei, na terceira caixa de codigo tem um exemplo que acredito que encaixe com teu problema.

3 Likes

Não sei se entendi o que era pra fazer… Eu colei aquele código e não funcionou. Preciso substituir o código que eu tenho por aquele que o colega fez? Ou eu só colo aquele código em alguma parte do arquivo? Estou confusa e continuo com erros.

1 Like

Oi @cristiane.dsc, susitui teu codigo desde:

// vamos criar um server que é uma instância do Apollo Server
const server = new ApolloServer({

Até inclusive:

server.applyMiddleware({
  app,
  cors: {
    origin: 'http://localhost:3000',
  },
});

Por esse:

async function startServer() {

// vamos criar um server que é uma instância do Apollo Server
const server = new ApolloServer({
  typeDefs: gql`
  type Client {
    id: ID!
    name: String!
  }
  type Demand {
    id: ID!
    name: String!
    client: Client!
    deadline: String
  }
  type Query {
    demands:[Demand]!
  }
  `,
});

await server.start();

server.applyMiddleware({
  app,
  cors: {
    origin: 'http://localhost:3000',
  },
});
}

startServer();
3 Likes

Mas está gerando o mesmo erro? ou é um erro novo? Vc pode substituir pelo dele, mas mantendo o que no seu é diferente, o meu por exemplo uso outra porta. Eu tambem coloquei as const no inicio do código.

2 Likes

Fiz isso e agora tenho esse outro erro:

1 Like

Então, eu tentei usar o código dele e deu erros diferentes, aí tive que mudar umas coisas de lugar. No final ainda tava dando um erro que dizia “typeDefs is not defined” e aí tentei a sugestão do @JMT mas tbm não funcionou…

Tem como subir no github?

vou te enviar como ficou o meu:

import express from ‘express’;

import { ApolloServer, gql } from ‘apollo-server-express’;

import { ApolloServerPluginLandingPageGraphQLPlayground } from ‘apollo-server-core’;

import typeDefs from ‘./graphql/typeDefs’;

import resolvers from ‘./graphql/resolvers’;

const app = express();

const PORT = process.env.PORT ? parseInt(process.env.PORT) : 4000;

const HOSTNAME = process.env.HOSTNAME || ‘127.0.0.1’;

async function startServer() {

const server = new ApolloServer({

    plugins: [

        ApolloServerPluginLandingPageGraphQLPlayground(),

    ],

    typeDefs,

    resolvers,

});

await server.start();

server.applyMiddleware({

    app,

    cors: {

        origin: `http://${HOSTNAME}:3000`

    },

    bodyParserConfig: true,

});

};

startServer(app);

app.listen(PORT, HOSTNAME, () => {

console.log(`Server listening at ${HOSTNAME}:${PORT}`);

});

2 Likes

Eu não entendi muito bem que partes do código eu deveria copiar, mas reparei que era semelhante ao que tem nesse tópico. Então tentei usar o do colega que criou o tópico que linkei. Mas deu que “typeDefs is not defined” e continuo perdida :frowning:

só muda a porta pra que vc tá usando, deve ser a 8000

1 Like

Preciso instalar esse “apollo-server-core”?

1 Like