Неудачный ответ: получен код состояния 500 Ошибка игровой площадки GraphQL при использовании даже пустых источников данных

Я следую руководству по полному стеку для Apollo, и всякий раз, когда я пытаюсь добавить источники данных на свой сервер Apollo, игровая площадка выдает ошибку 500 без дополнительных данных для отладки.

Я пробовал добавить самоанализ к истине, я удалил все, что связано с babel, полностью переделал свой импорт, чтобы все было в правильном формате.

Если я закомментирую dataSources, он работает нормально, даже при предоставлении пустой функции он не работает.

Пожалуйста, помогите мне, это меня убивает!

index.js

const {ApolloServer} = require('apollo-server');
const typeDefs = require('./schema');
const resolvers = require('./resolvers');
const BreweryAPI = require('./datasources/brewery');

const server = new ApolloServer({
    typeDefs,
    resolvers,
    dataSources: () => {},
    introspection: true
});

server.listen().then(({ url }) => {
    console.log(`???? Server ready at ${url}`);
});

schema.js

const {gql} = require('apollo-server');

const typeDefs = gql`
    type Query {
        breweries: [Brewery]!
        #Get a brewery by ID
        brewery(id: ID!): Brewery

        #Get a brewery by name
        breweriesByName(name: String!): [Brewery]

        #Get a list of breweries by state
        breweriesByState(state: String!): [Brewery]

        #Get a list of breweries by tag
        breweriesByTag(tag: String!): [Brewery]
    }

    type Brewery {
        id: ID!
        name: String
        type: String
        street: String
        city: String
        state: String
        postal: String
        country: String
        latitude: String
        longitude: String
        phone: String
        url: String
        tags: [String]
    }

    type User {
        id: ID!
        email: String!
        favorites: [Brewery]
        visited: [Brewery]
        beers: Int
    }

    type RequestResponse {
        errors: [String]
        success: Boolean
    }

    type Mutation {
        #Add a favorite brewery
        addFavorite(id: ID!): RequestResponse

        #Remove a favorite brewery
        removeFavorite(id: ID!): RequestResponse

        #Add a visited brewery
        addVisited(id: ID!): RequestResponse

        #Add number of beers drank at brewery
        addBeers(beers: Int!): Int

        #Login to track your alcoholism
        login(email: String): String
    }
`;

module.exports = typeDefs;

resolvers.js

module.exports = {
    Query: {
        breweries: async (_, __, { dataSources }) => dataSources.breweryAPI.getAllBreweries()
    }
}

package.json

{
  "name": "fullstack-tutorial-server",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "scripts": {
    "test": "jest",
    "start": "node src/index.js",
    "start:ci": "node src/index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "apollo-datasource": "^0.1.3",
    "apollo-datasource-rest": "^0.1.5",
    "apollo-server": "2.2.0-alpha.2",
    "apollo-server-testing": "2.2.0-alpha.2",
    "axios": "^0.18.0",
    "graphql": "^14.0.2",
    "isemail": "^3.1.3",
    "nodemon": "^1.18.4",
    "sequelize": "^4.39.0",
    "sqlite3": "^4.0.3"
  },
  "devDependencies": {
    "apollo-link": "^1.2.3",
    "apollo-link-http": "^1.5.5",
    "jest": "^23.6.0",
    "nock": "^10.0.2",
    "node-fetch": "^2.2.1"
  },
  "jest": {
    "testPathIgnorePatterns": [
      "/node_modules/",
      "/__utils"
    ]
  }
}

Я понятия не имею, что еще попробовать на данный момент, и других вопросов для исследования stackoverflow нет.


person exuals    schedule 06.03.2019    source источник
comment
Не связано с этой ошибкой (которая, похоже, вы догадалась), см. Это - stackoverflow.com/questions/53951318/, если вы хотите изменить схему так, чтобы у нее был только конец API, чтобы получать пивоварни на основе разных фильтров.   -  person Amit Bhoyar    schedule 06.03.2019


Ответы (1)


const server = new ApolloServer({
    typeDefs,
    resolvers,
    dataSources: () => {},
    introspection: true
});

Должно быть

const server = new ApolloServer({
    typeDefs,
    resolvers,
    dataSources: () => ({}),
    introspection: true
});

Странный синтаксис, но он вызывает указанную ошибку, не знаю почему!

person exuals    schedule 06.03.2019
comment
Это не странно, это Thunk - person chankruze; 01.10.2020