【问题标题】:"Response not successful: Received status code 500" GraphQL Playground Error when using even empty datasources“响应不成功:收到状态代码 500”即使使用空数据源也出现 GraphQL Playground 错误
【发布时间】:2019-07-28 07:27:44
【问题描述】:

我正在关注 Apollo 的全栈教程,每当我尝试将数据源添加到我的 Apollo 服务器时,playground 都会抛出 500 错误,并且没有其他数据可供调试。

我尝试将自省添加到 true,我删除了所有与 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;

解析器.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

【问题讨论】:

  • 与此错误无关(您似乎已经猜到了)参考此 - stackoverflow.com/questions/53951318/… 如果您想将架构更改为只有 api 端以根据不同的过滤器获取“啤酒厂”。跨度>

标签: graphql apollo apollo-server


【解决方案1】:
const server = new ApolloServer({
    typeDefs,
    resolvers,
    dataSources: () => {},
    introspection: true
});

应该是

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

奇怪的语法,但它会导致提到的错误,不知道为什么!

【讨论】:

  • 这并不奇怪,那是 Tunk
猜你喜欢
  • 2022-12-20
  • 2019-02-16
  • 2020-12-27
  • 1970-01-01
  • 2019-04-27
  • 2021-04-02
  • 1970-01-01
  • 2020-07-09
  • 2017-05-04
相关资源
最近更新 更多