Apollo-server: Error: Apollo Server requires either an existing schema, modules or typeDefs

Created on 20 Nov 2018  路  2Comments  路  Source: apollographql/apollo-server

dependencies:

  • apollo-server-express: ^2.2.2
  • express: ^4.16.4

description of issue

I have code below, it's typescript.

import express from 'express'
import { ApolloServer } from 'apollo-server-express'
import jwt from 'express-jwt'

import { resolvers, types } from './types'
import config from '../config'

const authMiddleware = jwt({
  secret: config.JWT_SECRET,
  credentialsRequired: false,
})
const graphqlApp = express()
const apolloServer = new ApolloServer({
  typeDefs: types,
  resolvers,
  playground: true,
  context: ({ req }) => ({
    user: req.user,
  }),
})

apolloServer.applyMiddleware({
  app: graphqlApp,
  path: '/',
})
graphqlApp.use(express.json())
graphqlApp.use(authMiddleware)

export default graphqlApp

When i trying compile code within tsc, i get this:

D:\Wampir\projects\web\movie-platform\node_modules\apollo-server-core\dist\ApolloServer.js:127
                throw Error('Apollo Server requires either an existing schema, modules or typeDefs');
                ^

Error: Apollo Server requires either an existing schema, modules or typeDefs
    at new ApolloServerBase (D:\Wampir\projects\web\movie-platform\node_modules\apollo-server-core\dist\ApolloServer.js:
127:23)
    at new ApolloServer (D:\Wampir\projects\web\movie-platform\node_modules\apollo-server-express\dist\ApolloServer.js:4
4:1)
    at Object.<anonymous> (D:\Wampir\projects\web\movie-platform\dist\server\graphql\index.js:16:22)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Module.require (internal/modules/cjs/loader.js:636:17)
    at require (internal/modules/cjs/helpers.js:20:18)

file types.ts

import { userResolvers, userTypes } from './user'

export const resolvers = {
  ...userResolvers,
}

export const types = [userTypes]

file user.ts

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

export const userTypes = gql`
  extend type Query {
    getUser: User
  }

  type User {
    first_name: String!
    last_name: String!
    age: Int!
  }
`

export const userResolvers = {
  getUser: () => ({
    first_name: 'Jhon',
    last_name: 'Doe',
    age: 12,
  }),
}

What i'm doing wrong?

Most helpful comment

schema.js

import { makeExecutableSchema } from 'apollo-server-express';
export default makeExecutableSchema({
    typeDefs: [AppSchema],
    resolvers: Resolvers
});

server.js

import Schema from './graphql/schema';
const apolloServer = new ApolloServer({
  schema:Schema,
  playground: true,
  context: ({ req }) => ({
    user: req.user,
  }),
})

It's work for me. try it.

All 2 comments

schema.js

import { makeExecutableSchema } from 'apollo-server-express';
export default makeExecutableSchema({
    typeDefs: [AppSchema],
    resolvers: Resolvers
});

server.js

import Schema from './graphql/schema';
const apolloServer = new ApolloServer({
  schema:Schema,
  playground: true,
  context: ({ req }) => ({
    user: req.user,
  }),
})

It's work for me. try it.

@rakibulalam
Yeah, it's work for me too.
Thanks a lot.

Was this page helpful?
0 / 5 - 0 ratings